Procedury przechowywanej w AdventureWorks
The AdventureWorks sample OLTP database includes several Transact-SQL stored procedures.Przykłady typowych procedur przechowywanych plików wykonywalnych (CLR) języka są dostępne w Przykłady programowania do środowiska CLR.
Środowisko CLR przechowywanych procedur
Poniższa lista zawiera przykłady procedury CLR przechowywane, które są dostępne.Aby uzyskać więcej informacji na temat środowiska CLR przechowywane procedury zobacz Środowisko CLR przechowywanych procedur.
Przykład |
Description |
---|---|
C# — podstawie procedura przechowywana, które przekieruje xml dane jego dane wejściowe, jak i wstawia dane do kolumn w Person.Contact tabela. |
Procedury przechowywanej języka Transact-SQL
Następujące tabela list Transact-SQL przechowywane procedury, które są uwzględnione w AdventureWorks Przykładowa baza danych OLTP. Aby uzyskać więcej informacji na temat Transact-SQL procedury przechowywane, zobacz Understanding Stored Procedures.
Procedura przechowywana |
Description |
Parametry wejściowe |
---|---|---|
dbo.uspGetBillOfMaterials |
Używa kwerendy cyklicznej (typowe wyrażenie tabela), aby wygenerować wielopoziomowej faktury z materiału: wszystkie na poziomie 1 składniki wirtualny plik dziennika poziom 0, wszystkie poziom 2 składników wirtualny plik dziennika poziomu 1 i tak dalej. |
@StartProductIDint @CheckDatedatetime |
dbo.uspGetEmployeeManagers |
Użyto kwerendy cyklicznej (typowe wyrażenie tabela), aby zwrócić menedżerów bezpośrednie i pośrednie dla określonego pracownika. |
@EmployeeIDint |
dbo.uspGetManagerEmployees |
Użyto kwerendy cyklicznej (typowe wyrażenie tabela), aby zwrócić pracowników bezpośrednich i pośrednich określonej menedżera. |
@ManagerIDint |
dbo.uspLogError |
Rejestruje informacje o błędach w dbo.ErrorLog tabela o błąd, który spowodował wykonanie przejść do blok CATCH konstrukcji TRY... CATCH.Ta procedura powinna być wykonywane z poziomu zakres blok CATCH; w przeciwnym razie, to zostanie zwrócona bez wstawiania informacji o błędzie. |
@ErrorLogIDint = 0 OUTPUT |
dbo.uspPrintError |
Drukuje informacje o błędzie o błąd, który spowodował wykonanie przejść do blok CATCH konstrukcji TRY... CATCH.Ta procedura powinna być wykonywane w programie w zakresie blok CATCH; w przeciwnym razie będzie zwracać bez drukowania informacje o błędzie. |
None |
dbo.uspGetWhereUsedProductID |
Użyto kwerendy cyklicznej (typowe wyrażenie tabela), aby zwrócić wszystkie zespoły produktu, które używają składnika określonego produktu.Na przykład zwracają wszystkie rowery, korzystających z określonego koła lub typ farby. |
@StartProductIDint @CheckDatedatetime |
uspUpdateEmployeeHireInfo |
Aktualizacje Pracownika tabela i wstawia nowy wiersz w EmployeePayHistory tabela z wartości określone w parametrach wejściowych. |
@EmployeeIDint @Titlenvarchar(50) @HireDatedatetime @RateChangeDatedatetime @Ratemoney @PayFrequencytinyint @CurrentFlagdbo.Flag |
uspUpdateEmployeeLogin |
Aktualizacje Pracownika wartości określone w parametrach wejściowych dla określonego tabelaPole IDPracownika. |
@ IDPracownika. int @ManagerIDint @LoginIDnvarchar(256) @Titlenvarchar(50) @HireDatedatetime @CurrentFlagdbo.Flag |
uspUpdateEmployeePersonalInfo |
Aktualizacje Pracownika wartości określone w parametrach wejściowych dla określonego tabelaPole IDPracownika. |
@ IDPracownika. int @NationalIDNumbernvarchar(15) @BirthDatedatetime @MaritalStatusnchar(1) @Gendernchar(1) |
Przykłady
A.Za pomocą dbo.uspGetBillOfMaterials
Poniższy przykład działa uspgetBillOfMaterials Procedura przechowywana. 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.Za pomocą dbo.uspGetEmployeeManagers
Poniższy przykład działa uspGetEmployeeManagers Procedura przechowywana. Procedura zwraca hierarchiczną listę menedżerów bezpośrednie i pośrednie dla EmployeeID 50.
USE AdventureWorks;
GO
EXEC dbo.uspGetEmployeeManagers 50;
C.Za pomocą dbo.uspGetManagerEmployees
Poniższy przykład działa uspGetManagerEmployees Procedura przechowywana. Procedura zwraca hierarchiczną listę pracowników bezpośrednie i pośrednie tworzenie raportów ManagerID 140.
USE AdventureWorks;
GO
EXEC dbo.uspGetManagerEmployees 140;
D.Za pomocą dbo.uspGetWhereUsedProductID
Poniższy przykład działa usp_getWhereUsedProductID Procedura przechowywana. Procedura zwraca zwrotu wszystkie produkty, które używają produktów (CAPTIONML Road Front kołoProductID 819)
USE AdventureWorks
GO
DECLARE @CheckDate datetime;
SET @CheckDate = GETDATE();
EXEC dbo.uspGetWhereUsedProductID 819, @CheckDate;
E.Za pomocą HumanResources.uspUpdateEmployeeHireInfo
Poniższy przykład działa uspUpdateEmployeeHireInfo Procedura przechowywana. Aktualizacje procedury Title, HireDate, a Current Flag kolumny w Employee Tabela dla określonego EmployeeID i wstawia nowy wiersz w EmployeePayHistory Tabela z wartościami dla EmployeeID, RateChangeDate, Rate i PayFrequency. Wszystkie wartości parametru musi być określona.
USE AdventureWorks;
GO
EXEC [HumanResources].[uspUpdateEmployeeHireInfo]
@EmployeeID = 109,
@Title = N'President',
@HireDate = '19980513',
@RateChangeDate = '20041208',
@Rate = 50.00,
@PayFrequency = 1,
@CurrentFlag = 1;
F.Za pomocą HumanResources.uspUpdateEmployeeLogin
Poniższy przykład działa uspUpdateEmployeeLogin Procedura przechowywana. Aktualizacje procedury ManagerID, LoginID, Title, HireDate, a Current Flag kolumny w Employee Tabela EmployeeID 6. Wszystkie wartości parametru musi być określona.
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.Za pomocą HumanResources.uspUpdateEmployeePersonalInfo
Poniższy przykład działa uspUpdateEmployeePersonalInfo Procedura przechowywana. Aktualizacje procedury NationalIDNumber, BirthDate, MaritalStatue, a Gender kolumny w Employee Tabela EmployeeID 6. Wszystkie wartości parametru musi być określona.
USE AdventureWorks;
GO
EXEC HumanResources.uspUpdateEmployeePersonalInfo
@EmployeeID = 6,
@NationalIDNumber = N'123-45-6789',
@BirthDate = '19651030',
@MaritalStatus = N'S',
@Gender = N'M';
GO
H.Za pomocą dbo.uspLogError
W poniższym przykładzie próbuje usunąć produktów Mountain-400-W Silver, 38)ProductID 980) z Production.Product Tabela. Ograniczenia klucz obcy dla tabela nie zezwala na usuwanie operacja powiodła się, a błąd naruszenia zasad ograniczenie przekazuje sterowanie do CATCH blok. Kod wewnątrz CATCH Zablokuj pierwszą czeków dla wszystkich aktywnych transakcji i rolkach ich kopii przed rozpoczęciem wykonywania uspLogError Procedura przechowywana. Procedura ta wprowadza informacje o błędzie w ErrorLog Tabela i zwraca ErrorLogID w wierszu do @ErrorLogID OUTPUT parametr. The @ErrorLogID parameter has a default value of 0.The ErrorLog tabela is then queried to view the wyniki of the procedura przechowywana.
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;
I.Za pomocą dbo.uspPrintError
The following example tries to delete the product Mountain-400-W Silver, 38 (ProductID980) from the Production.Product table.Ograniczenia klucz obcy dla tabela nie zezwala na usuwanie operacja powiodła się, a błąd naruszenia zasad ograniczenie przekazuje sterowanie do CATCH blok. Kod wewnątrz CATCH wykonuje blok uspPrintError Procedura przechowywana. Ta procedura umożliwia drukowanie informacji o błędzie.
USE AdventureWorks;
GO
BEGIN TRY
DELETE FROM Production.Product
WHERE ProductID = 980;
END TRY
BEGIN CATCH
EXECUTE dbo.uspPrintError;
END CATCH;
GO