(Veritabanı altyapısı) saklı yordamları çalıştırma
Yürütülecek bir saklı yordam, kullanma Transact-SQL execute deyim.Alternatif olarak, bir saklı yordam, saklı yordam toplu iş içinde ilk deyim ise yürütmek anahtar sözcüğünü kullanmadan yürütebilirsiniz.
Saklı yordamları çalıştırma sistemi
Sistem saklı yordamlar karakterlerle başlayan sp_who.Fiziksel olarak depolandıkları kaynak veritabanı, mantıksal olarak görüntülenir, ancak sys her sistem ve kullanıcı tanımlı veritabanı şemasını örnek , SQL Server.Sistem saklı yordamlar herhangi bir veritabanı saklı yordam adı tam olarak kaliteli gerekmeden çalıştırılır.Bir nonschema tam bir parça adı gibi adıdır sp_someproc ya da bir üç bölümlü adı gibi somedb...sp_someproc ikinci bölümü, şema adı belirtilmemiş.
Öneririz, şema-tüm uygun olduğunuzu sistem saklı yordamı adları ile sys ad çakışmalarını önlemek için şema adı.Aşağıdaki örnekte gösterilmiştir çalıştırmak için önerilen yöntem bir sistem saklı yordamı.
EXEC sys.sp_who;
Aşağıdaki örnek sistem saklı yordamları çalıştırma geriye dönük uyumlu yöntemleri gösterilmektedir.
Not
Sistem saklı yordamlar, gelecekte de kaldırılır yürütme aşağıdaki yöntemlerden sürüm , SQL Server.Yeni geliştirme çalışması bu yöntemler kullanmaktan kaçının ve bunları kullanan uygulamaları değiştirmek plan.
EXEC sp_who;
EXEC master.dbo.sp_who;
EXEC mydatabase..sp_who;
EXEC dbo.sp_who;
EXEC mydatabase.dbo.sp_who;
Veritabanı harmanlama eşleşen
SQL Server 2008 Sistem yordam adları eşleşen arama veritabanı harmanlama kullanır.Bu nedenle, uygulamanızdaki her zaman sistem yordam adları tam durum kullanmanız gerekir.Örneğin, bu kod bir duyarlı olan bir veritabanı bağlamında yürütülen başarısız olur harmanlama:
exec SP_heLP; -- Will fail to resolve because SP_heLP does not equal sp_help
Usesys.system_objects ve sys.system_parameters tam olarak görüntülemek için görünümler katalog sistem saklı yordamı adları.
Yürütme sistemi genişletilmiş saklı yordamlar
Sistem saklı yordamlar genişletilmiş karakterlerle başlayan xp_.Fiziksel olarak depolandıkları kaynak veritabanı, mantıksal olarak görüntülenir, ancak sys her sistem ve kullanıcı tanımlı veritabanı şemasını örnek , SQL Server.Aşağıdaki örnekte, genişletilmiş saklı yordam sistemi çalıştırmak için önerilen yöntem gösterilmektedir.
EXEC sys.xp_subdirs 'c:\';
Kullanıcı tanımlı saklı yordamları çalıştırma
Kullanıcı tanımlı yürütme saklı yordamı (veya toplu iş iş olarak kullanıcı tanımlı bir saklı yordam veya işlev bir modül içinde), saklı yordam adı ile en az şema adı niteleme kesinlikle öneririz.
Aşağıdaki örnek, kullanıcı tanımlı çalıştırmak için önerilen yöntem gösterir saklı yordam.
USE AdventureWorks2008R2;
GO
EXEC dbo.uspGetEmployeeManagers 50;
- Veya -
EXEC AdventureWorks2008R2.dbo.uspGetEmployeeManagers 50;
GO
Nonqualified bir kullanıcı tanımlı ise saklı yordam belirtilirse, Veritabanı Altyapısı yordam aşağıdaki sırayla arar:
The sys schema of the current database.
Bir toplu iş veya dinamik sql yürütülen, arayanın varsayılan şema.Ya da nonqualified yordam adı başka bir yordam tanımı gövdesi içinde görünüyorsa, bu yordamı içeren şema sonraki aranır.Varsayılan şemaları hakkında daha fazla bilgi için bkz: Kullanıcı şeması ayrımı.
The dbo schema in the current database.
Önemli |
---|
Kullanıcı tarafından oluşturulan bir saklı yordam sistem saklı yordamı aynı ada sahipse, nonschema tam adı başvurusu kullanırsanız, kullanıcı tarafından oluşturulan bir saklı yordam asla yürütülür.Daha fazla bilgi için bkz: Oluşturma saklı yordamlar (veritabanı altyapısı). |
Parametreler belirtme
Parametre değerleri kabul etmek için bir saklı yordam yazılmışsa sağlanabilir.
Sağlanan değer, sabit veya değişken olması gerekir; parametre değeri olarak bir işlev adı belirtemezsiniz.Kullanıcı tanımlı değişkenleri olabilir veya @@ SPID gibi Sistem değişkenleri.
Aşağıdaki örnekler için saklı yordam parametre değerlerini geçirerek göstermektedir uspGetWhereUsedProductID.Yordam, iki giriş parametreleri için değerleri bekler: Ürün kimliği ve bir tarih.Örnekler, sabitleri ve değişkenleri parametreleri geçirmek nasıl ve ayrıca bir değişkeni bir işlev değerini geçmesi için nasıl kullanılacağını açıklar.
USE AdventureWorks2008R2;
GO
-- Passing values as constants.
EXEC dbo.uspGetWhereUsedProductID 819, '20050225';
GO
-- Passing values as variables.
DECLARE @ProductID int, @CheckDate datetime;
SET @ProductID = 819;
SET @CheckDate = '20050225';
EXEC dbo.uspGetWhereUsedProductID @ProductID, @CheckDate;
GO
-- Try to use a function as a parameter value.
-- This produces an error message.
EXEC dbo.uspGetWhereUsedProductID 819, GETDATE();
GO
-- Passing the function value as a variable.
DECLARE @CheckDate datetime;
SET @CheckDate = GETDATE();
EXEC dbo.uspGetWhereUsedProductID 819, @CheckDate;
GO
Bunlar tanımlanır sipariş daha farklı bir sırayla parametrelerini belirtmek isterseniz, saklı yordam, ad vermelisiniz.Daha fazla bilgi için bkz: Parametre adı belirtme.
Bir parametre çağıran programa bir değer döndürmesi gerektiğini belirtmek için çıktı anahtar sözcüğünü kullanın.Daha fazla bilgi için bkz: Bir parametrenin yönünü belirleme.
Parametre sırasını belirtme
If you supply parameters in the form **@parameter =**value, you can supply them in any order.Ayrıca varsayılan değeri sağlanmadı parametreleri atlayabilirsiniz.If you supply one parameter in the form **@parameter =**value, you must supply all subsequent parameters this way.If you do not supply parameters in the form **@parameter =**value, you must supply them in the order given in the CREATE PROCEDURE statement.
Bir saklı yordam yürütülürken server yordamı oluşturma sırasında parametre listesi ile birlikte herhangi bir parametre reddeder.Parametre adı eşleşmiyor (parametre adını açıkça geçirerek) başvuruyla geçirildi herhangi bir parametre kabul edilir değil.
Varsayılan değerleri parametreleri kullanma
Varsayılan değeri sağlanmadı parametreleri atlayabilirsiniz, ancak parametre listesi yalnızca kırpabilirsiniz.For example, if a stored procedure has five parameters, you can omit both the fourth and the fifth parameters, but you cannot skip the fourth and still include the fifth unless you supply parameters in the form **@parameter =**value.
Saklı yordam içindeki parametre için tanımlanan bir parametrenin varsayılan değeri kullanılır olduğunda:
Saklı yordam çalıştırıldığında parametresi için değer belirtildi.
Parametre için değer olarak default anahtar belirtildi.
Ayrıca bkz.