Aracılığıyla paylaş


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

AdventureWorks Cycles CLR Layer

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