2011-06-23 30 views
5

Aşağıda gösterilen gibi saklı bir yordam içinde kullanılmak üzere saklı yordam oluşturmak istiyorum. Mümkün mü?SQL Server 2008'de saklı bir prosedürde saklı yordam nasıl oluşturulur

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

Bu garip bir gereklilik Liks görünüyor - Bunun için yapılacak senin motivasyon nedir? –

+0

Will A soruya cevap olarak oldukça birkaç yıl sonra saklı bir prosedür içinde saklı bir prosedür oluşturmak için aynı ihtiyacım var ve mantıksal bir anahtar kelime kullanarak benim tempdb kullanımı izleyebilir miyim? sadece mevcut veritabanı bağlamında kullanılabilir. Ben tempdb içinde bir alt kaydedilmiş proc yaratacağım, böylece doğru sonuçlar elde edebilmek ve daha sonra saklanan proc varsa bunu kontrol edeceğim. Tempdb her defasında yeniden oluşturulduğundan, saklanan proc oluşturma kodunu tutmam gerekecek, ancak her seferinde yeniden oluşturma konusunda endişelenmeyeceğim. –

+0

Bunu yapmak istemenizin bir nedeni şu olacaktır: eğer bir proc, işlev, tür, vb. Geçici olarak bu yordam için geçici olarak oluşturmak istiyorsanız ve prosedür tamamlanmadan önce bunları silmek istiyorsanız. – Ellis

cevap

8

Sen exec kullanabilirsiniz:

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

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

Tabii ki, bu işlem ikinci kez çalıştırılırken hata yapar, aksi takdirde prosedürü düşürmezseniz (veya sadece proc mevcut değilse içsel çalışmayı çalıştırırsanız) –

+0

Eğer bir mağaza proc'su oluşturursanız, bir kez düşürmeniz gerekir. kullanarak yapıldı. – kheya

İlgili konular