Saklı yordamlar, AdventureWorks
The AdventureWorks sample OLTP database includes several Transact-SQL stored procedures.Ortak dil çalışma zamanı (CLR) depolanan yordamlar kullanılabilir örnekler CLR programlama örnekleri.
CLR yordamlar depolanan...
Aşağıdaki tablo, kullanılabilen CLR saklı yordamı örnekleri listeler.CLR saklı yordamlar hakkında daha fazla bilgi için bkz: CLR yordamlar depolanan....
Örnek |
Açıklama |
---|---|
C#-götüren saklı yordam göre xml Veri, giriş olarak ve veri sütunları ekler Person.Contact tablosudur. |
Transact-SQL yordamları depolanan...
Aşağıdaki liste tablo Transact-SQL saklı yordamları, dahil edilen AdventureWorks Örnek OLTP veritabanı. Daha fazla bilgi için Transact-SQL saklı yordamlar için bkz: Yordamlar anlama depolanan.
Saklı yordam |
Açıklama |
Giriş parametreleri |
---|---|---|
dbo.uspGetBillOfMaterials |
Özyinelenen bir sorgu (Ortak tablo ifade), çok düzeyli bir kambiyo senedi malzeme oluşturmak için kullanır: Tüm düzey 0 derlemenin 1 bileşenleri düzey, tüm bileşenleri bir düzey 1 derleme 2 düzey ve bu böyle devam eder. |
@StartProductIDint @CheckDatedatetime |
dbo.uspGetEmployeeManagers |
Belirtilen çalışanın doğrudan ve dolaylı yöneticileri dönmek için özyinelemeli sorgu (Ortak tablo ifade) kullanır. |
@EmployeeIDint |
dbo.uspGetManagerEmployees |
Özyinelenen bir sorgu (Ortak tablo ifade) belirtilen yöneticisinin doğrudan ve dolaylı çalışanları döndürmek için kullanır. |
@ManagerIDint |
dbo.uspLogError |
Hata bilgisi oturum açtığında dbo.ErrorLog tablo hakkında bir TRY,... CATCH yapýsý CATCH blok atlamak yürütülmesine neden olan hata.Bu yordamı içinden yürütülmelidir kapsam CATCH blok; aksi halde, bu hata bilgileri eklemeden döndürecektir. |
@ErrorLogIDint = 0 OUTPUT |
dbo.uspPrintError |
Bir TRY,... CATCH yapýsý CATCH blok atlamak yürütülmesine neden olan hata hata bilgilerini yazdırır.Bu yordamın bir CATCH blok kapsamında yürütülmelidir; aksi takdirde hata bilgilerini yazdırmadan döndürecektir. |
None |
dbo.uspGetWhereUsedProductID |
Özyinelenen bir sorgu (Ortak tablo ifade), belirtilen ürün bileşenini kullanan tüm ürün derlemelerin döndürmek için kullanır.Örneğin, belirli bir Tekerlek ya da boyama türünü kullanan tüm bisiklet döndürür. |
@StartProductIDint @CheckDatedatetime |
uspUpdateEmployeeHireInfo |
Güncelleştirmelerin Çalışan tablo ve yeni bir satır ekler EmployeePayHistory tablo giriş parametrelerinde belirtilen değerlere sahip. |
@EmployeeIDint @Titlenvarchar(50) @HireDatedatetime @RateChangeDatedatetime @Ratemoney @PayFrequencytinyint @CurrentFlagdbo.Flag |
uspUpdateEmployeeLogin |
Güncelleştirmelerin Çalışan tablo Giriş parametreleri için belirtilen belirtilen değerleriÇalışanNo. |
@ ÇalışanNo int @ManagerIDint @LoginIDnvarchar(256) @Titlenvarchar(50) @HireDatedatetime @CurrentFlagdbo.Flag |
uspUpdateEmployeePersonalInfo |
Güncelleştirmelerin Çalışan tablo Giriş parametreleri için belirtilen belirtilen değerleriÇalışanNo. |
@ ÇalışanNo int @NationalIDNumbernvarchar(15) @BirthDatedatetime @MaritalStatusnchar(1) @Gendernchar(1) |
Örnekler
C.Dbo.uspGetBillOfMaterials kullanma
Aşağıdaki örnek çalışan uspgetBillOfMaterials saklı yordam. The procedure returns a hierarchical list of components used to manufacture the Road-550-W Yellow, 44 product (ProductID800).
USE AdventureWorks;
GO
DECLARE @CheckDate DATETIME;
SET @CheckDate = GETDATE();
EXEC [AdventureWorks].[dbo].[uspGetBillOfMaterials] 800, @CheckDate;
b.Dbo.uspGetEmployeeManagers kullanma
Aşağıdaki örnek çalışan uspGetEmployeeManagers saklı yordam. Yordamı doğrudan ve dolaylı yöneticilerinden hiyerarşik bir listesini verir... EmployeeID 50.
USE AdventureWorks;
GO
EXEC dbo.uspGetEmployeeManagers 50;
c.Dbo.uspGetManagerEmployees kullanma
Aşağıdaki örnek çalışan uspGetManagerEmployees saklı yordam. Yordamı için doğrudan ve dolaylı çalışanları hiyerarşik bir listesini verir... ManagerID 140.
USE AdventureWorks;
GO
EXEC dbo.uspGetManagerEmployees 140;
d.Dbo.uspGetWhereUsedProductID kullanma
Aşağıdaki örnek çalışan usp_getWhereUsedProductID saklı yordam. Ürün ML Road ön tekerlek () kullanan tüm ürünleri yordamın dönüş verirProductID 819)
USE AdventureWorks
GO
DECLARE @CheckDate datetime;
SET @CheckDate = GETDATE();
EXEC dbo.uspGetWhereUsedProductID 819, @CheckDate;
e.HumanResources.uspUpdateEmployeeHireInfo kullanma
Aşağıdaki örnek çalışan uspUpdateEmployeeHireInfo saklı yordam. Yordam güncelleştirmelerin Title, HireDate, ve Current Flag sütunlarda Employee Belirtilen tablo EmployeeID ve yeni bir satır ekler EmployeePayHistory Tablo değerleri EmployeeID, RateChangeDate, Rate ve PayFrequency. Tüm parametre değerleri belirtilmeli.
USE AdventureWorks;
GO
EXEC [HumanResources].[uspUpdateEmployeeHireInfo]
@EmployeeID = 109,
@Title = N'President',
@HireDate = '19980513',
@RateChangeDate = '20041208',
@Rate = 50.00,
@PayFrequency = 1,
@CurrentFlag = 1;
f.HumanResources.uspUpdateEmployeeLogin kullanma
Aşağıdaki örnek çalışan uspUpdateEmployeeLogin saklı yordam. Yordam güncelleştirmelerin ManagerID, LoginID, Title, HireDate, ve Current Flag sütunlarda Employee Tablo için EmployeeID 6. Tüm parametre değerleri belirtilmeli.
USE AdventureWorks;
GO
DECLARE @HireDate datetime;
SET @HireDate = CONVERT(DATETIME,'19990619',101);
EXEC HumanResources.uspUpdateEmployeeLogin
@EmployeeID = 6,
@ManagerID = 273,
@LoginID = N'adventure-works\david01',
@Title = N'Marketing Vice President',
@HireDate = @HireDate,
@CurrentFlag = 1 ;
g.HumanResources.uspUpdateEmployeePersonalInfo kullanma
Aşağıdaki örnek çalışan uspUpdateEmployeePersonalInfo saklı yordam. Yordam güncelleştirmelerin NationalIDNumber, BirthDate, MaritalStatue, ve Gender sütunlarda Employee Tablo için EmployeeID 6. Tüm parametre değerleri belirtilmeli.
USE AdventureWorks;
GO
EXEC HumanResources.uspUpdateEmployeePersonalInfo
@EmployeeID = 6,
@NationalIDNumber = N'123-45-6789',
@BirthDate = '19651030',
@MaritalStatus = N'S',
@Gender = N'M';
GO
h.Dbo.uspLogError kullanma
Aşağıdaki örnek ürün Mountain-400-W Gümüş, 38 (silmeye çalışırProductID 980) gelen Production.Product TABLO. Tablodaki BIR yabancı anahtar kısıtlaması silme işlemi başarılı olması izin vermiyor ve kısıtlama ihlali hatası denetimi geçirmeden CATCH blok. Içinde kod CATCH ilk denetim için tüm etkin işlemler ve yeniden yürütmeden önce bunları yeniden zarlar engellenmesine uspLogError saklı yordam. Bu yordamın hata bilgileri girer ErrorLog Tablo ve döndürür ErrorLogID eklenen bir satırın @ErrorLogID OUTPUT Parametre. The @ErrorLogID parameter has a default value of 0.The ErrorLog tablo is then queried to view the sonuçlar of the saklı yordam.
USE AdventureWorks;
GO
BEGIN TRY
BEGIN TRANSACTION;
DELETE FROM Production.Product
WHERE ProductID = 980;
COMMIT TRANSACTION;
END TRY
BEGIN CATCH
IF XACT_STATE() <> 0
ROLLBACK TRANSACTION;
DECLARE @ErrorLogID INT;
EXECUTE dbo.uspLogError @ErrorLogID = @ErrorLogID OUTPUT;
END CATCH;
GO
--View the results of the uspLogError stored procedure
SELECT * FROM dbo.ErrorLog;
İ.Dbo.uspPrintError kullanma
The following example tries to delete the product Mountain-400-W Silver, 38 (ProductID980) from the Production.Product table.Tablodaki BIR yabancı anahtar kısıtlaması silme işlemi başarılı olması izin vermiyor ve kısıtlama ihlali hatası denetimi geçirmeden CATCH blok. Içinde kod CATCH blok yürütür uspPrintError saklı yordam. Bu yordam, hata bilgileri yazdırır.
USE AdventureWorks;
GO
BEGIN TRY
DELETE FROM Production.Product
WHERE ProductID = 980;
END TRY
BEGIN CATCH
EXECUTE dbo.uspPrintError;
END CATCH;
GO
See Also