2011-06-23 18 views
5

Chcę utworzyć procedurę składowaną, która będzie używana w ramach procedury składowanej, jak pokazano poniżej. czy to możliwe?Tworzenie procedury składowanej w ramach innej procedury składowanej w SQL Server 2008

CREATE procedure parentSP 
as 

--child SP definition. 
CREATE procedure childSP1 @inputArg varchar(50) 
as 
--do something. 
Go 

--call child sp within parentSP 
execute childSP1 '10' 

Go 
+2

Wydaje liks dziwne wymaganie - jaka jest twoja motywacja dla tej operacji? –

+0

W odpowiedzi na twoje pytanie Czy A to już kilka lat później, mam taką samą potrzebę utworzenia procedury przechowywanej w procedurze przechowywanej i rozumowanie polega na śledzeniu mojego użycia tempdb za pomocą niestandardowego zapisanego procesu, który używa słowa kluczowego fileproperty, które może używać tylko w kontekście bieżącej bazy danych. Będę tworzył zapisany w pamięci podręcznej proces wewnątrz tempdb, dzięki czemu będę mógł uzyskać dokładne wyniki, a następnie sprawdzać, czy istnieje przechowywany proces. Ponieważ tempdb jest ponownie tworzony za każdym razem, będę musiał zachować zapisany kod do tworzenia proc, ale nie będę się martwić o ponowne jego tworzenie za każdym razem. –

+0

Powodem tego jest: jeśli chcesz utworzyć proc, funkcję, typ itp. Tymczasowo tylko dla tej procedury i chcesz usunąć je wszystkie przed zakończeniem procedury. – Ellis

Odpowiedz

8

Można użyć exec:

CREATE procedure parentSP 
as 
exec('CREATE procedure childSP1 @inputArg varchar(50) 
as 
--do something.') 

--call child sp within parentSP 
execute childSP1 '10' 
Go 
+1

Oczywiście będzie to błąd przy drugim uruchomieniu, chyba że później przerwiesz procedurę (lub uruchomisz tylko wewnętrzne tworzenie, jeśli proc nie istnieje) –

+0

jeśli utworzysz procę sklepu w locie, powinieneś raz upuścić zrobione z niego korzystać. – kheya

Powiązane problemy