Share via


Procédures stockées dans AdventureWorks

L'exemple de base de données OLTP AdventureWorks comporte plusieurs procédures stockées Transact-SQL. Des exemples de procédures stockées CLR (common language runtime) sont disponibles dans CLR Programmability Samples.

Procédures stockées CLR

Le tableau ci-dessous répertorie les exemples de procédures stockées CLR qui sont disponibles. Pour plus d'informations sur les procédures stockées CLR, consultez CLR Stored Procedures.

Exemple Description

Couche CLR de la base de données Adventure Works Cycles

Procédure stockée basée sur C#- qui prend des données xml en valeurs d'entrée et insert les données dans les colonnes de la table Person.Contact.

Gestion des objets LOB (Large OBject)

Illustre l'utilisation des procédures stockées CLR et l'appel des procédures stockées Transact-SQL à partir des procédures stockées CLR.

Procédures stockées Transact-SQL

Le tableau ci-dessous répertorie les procédures stockées Transact-SQL qui sont incluses dans l'exemple de base de données OLTP AdventureWorks. Pour plus d'informations sur les procédure stockées Transact-SQL, consultez Description des procédures stockées.

Procédure stockée Description Paramètres d'entrée

dbo.uspGetBillOfMaterials

Utilise une requête récursive (expression courante de table) pour générer une nomenclature à plusieurs niveaux : tous les composants de niveau 1 d'un assemblage de niveau 0, tous les composants de niveau 2 d'un assemblage de niveau 1, etc.

@StartProductIDint

@CheckDatedatetime

dbo.uspGetEmployeeManagers

Utilise une requête récursive (expression courante de table) pour retourner les responsables directs et indirects des employés spécifiés.

@EmployeeIDint

dbo.uspGetManagerEmployees

Utilise une requête récursive (expression courante de table) pour retourner les employés directs et indirects des responsables spécifiés.

@ManagerIDint

dbo.uspLogError

Consigne les informations d'erreur dans la table dbo.ErrorLog concernant l'erreur qui a provoqué le brusque passage de l'exécution au bloc CATCH d'une construction TRY...CATCH. Cette procédure doit être exécutée à partir d'un bloc CATCH ; sinon, elle revient sans insérer les informations d'erreur.

@ErrorLogIDint = 0 OUTPUT

dbo.uspPrintError

Imprime les informations d'erreur concernant l'erreur qui a provoqué le brusque passage de l'exécution au bloc CATCH d'une construction TRY...CATCH. Cette procédure doit être exécutée à partir d'un bloc CATCH ; sinon, elle revient sans imprimer les informations d'erreur.

Aucun

dbo.uspGetWhereUsedProductID

Utilise une requête récursive (expression courante de table) pour retourner tout les assemblages de produit qui utilisent le composant de produit spécifié. Par exemple, retourner toutes les bicyclettes qui utilisent une roue ou un type de peinture spécifique.

@StartProductIDint

@CheckDatedatetime

uspUpdateEmployeeHireInfo

Met à jour la table Employee et insert une nouvelle ligne dans la table EmployeePayHistory avec les valeurs spécifiées dans les paramètres d'entrée.

@EmployeeIDint

@Titlenvarchar(50)

@HireDatedatetime

@RateChangeDatedatetime

@Ratemoney

@PayFrequencytinyint

@CurrentFlagdbo.Flag

uspUpdateEmployeeLogin

Met à jour la table Employee avec les valeurs spécifiées dans les paramètres d'entrée pour un EmployeeID donné.

@EmployeeID int

@ManagerIDint

@LoginIDnvarchar(256)

@Titlenvarchar(50)

@HireDatedatetime

@CurrentFlagdbo.Flag

uspUpdateEmployeePersonalInfo

Met à jour la table Employee avec les valeurs spécifiées dans les paramètres d'entrée pour un EmployeeID donné.

@EmployeeID int

@NationalIDNumbernvarchar(15)

@BirthDatedatetime

@MaritalStatusnchar(1)

@Gendernchar(1)

Exemple

A. Utilisation de dbo.uspGetBillOfMaterials

L'exemple suivant exécute la procédure stockée uspgetBillOfMaterials. La procédure retourne la liste hiérarchique des composants utilisés pour fabriquer le produit Road-550-W Yellow, 44 (ProductID``800).

USE AdventureWorks;
GO
DECLARE @CheckDate DATETIME;
SET @CheckDate = GETDATE();
EXEC [AdventureWorks].[dbo].[uspGetBillOfMaterials] 800, @CheckDate;

B. Utilisation de dbo.uspGetEmployeeManagers

L'exemple suivant exécute la procédure stockée uspGetEmployeeManagers. La procédure retourne la liste hiérarchique des responsables directs et indirects de l'EmployeeID 50.

USE AdventureWorks;
GO
EXEC dbo.uspGetEmployeeManagers 50;

C. Utilisation de dbo.uspGetManagerEmployees

L'exemple suivant exécute la procédure stockée uspGetManagerEmployees. La procédure retourne la liste hiérarchique des employés directs et indirects du ManagerID 140.

USE AdventureWorks;
GO
EXEC dbo.uspGetManagerEmployees 140;

D. Utilisation de dbo.uspGetWhereUsedProductID

L'exemple suivant exécute la procédure stockée usp_getWhereUsedProductID. La procédure retourne tous les produits qui utilisent le produit ML Road Front Wheel (ProductID 819)

USE AdventureWorks
GO
DECLARE @CheckDate datetime;
SET @CheckDate = GETDATE();
EXEC dbo.uspGetWhereUsedProductID 819, @CheckDate;

E. Utilisation de HumanResources.uspUpdateEmployeeHireInfo

L'exemple suivant exécute la procédure stockée uspUpdateEmployeeHireInfo. La procédure met à jour les colonnes Title, HireDate et Current Flag dans la table Employee pour l'EmployeeID spécifié et insert une nouvelle ligne dans la table EmployeePayHistory avec les valeurs de EmployeeID, RateChangeDate, Rate et PayFrequency. Toutes les valeurs de paramètres doivent être spécifiées.

USE AdventureWorks;
GO
EXEC [HumanResources].[uspUpdateEmployeeHireInfo]
    @EmployeeID = 109, 
    @Title = N'President', 
    @HireDate = '19980513',
    @RateChangeDate = '20041208', 
    @Rate = 50.00, 
    @PayFrequency = 1, 
    @CurrentFlag = 1;

F. Utilisation de HumanResources.uspUpdateEmployeeLogin

L'exemple suivant exécute la procédure stockée uspUpdateEmployeeLogin. La procédure met à jour les colonnes ManagerID, LoginID, Title, HireDate et Current Flag dans la table Employee pour l'EmployeeID 6. Toutes les valeurs de paramètres doivent être spécifiées.

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. Utilisation de HumanResources.uspUpdateEmployeePersonalInfo

L'exemple suivant exécute la procédure stockée uspUpdateEmployeePersonalInfo. La procédure met à jour les colonnes NationalIDNumber, BirthDate, MaritalStatue et Gender dans la table Employee pour l'EmployeeID 6. Toutes les valeurs de paramètres doivent être spécifiées.

USE AdventureWorks;
GO
EXEC HumanResources.uspUpdateEmployeePersonalInfo
    @EmployeeID = 6, 
    @NationalIDNumber = N'123-45-6789',
    @BirthDate = '19651030',
    @MaritalStatus = N'S', 
    @Gender = N'M';
GO

H. Utilisation de dbo.uspLogError

L'exemple suivant tente de supprimer le produit Mountain-400-W Silver, 38 (ProductID 980) de la table Production.Product. L'opération de suppression échoue en raison d'une contrainte FOREIGN KEY sur la table, et l'erreur de violation de contrainte transmet le contrôle au bloc CATCH. Le code à l'intérieur du bloc CATCH commence par rechercher d'éventuelles transactions actives pour les annuler avant d'exécuter les procédures stockées uspLogError. Cette procédure insert les informations d'erreur dans la table ErrorLog et retourne le ErrorLogID de la ligne insérée dans le paramètre @ErrorLogID OUTPUT. Le paramètre @ErrorLogID a une valeur par défaut de 0. La table ErrorLog est alors interrogée pour consulter les résultats de la procédure stockée.

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. Utilisation de dbo.uspPrintError

L'exemple suivant tente de supprimer le produit Mountain-400-W Silver, 38 (ProductID``980) de la table Production.Product. L'opération de suppression échoue en raison d'une contrainte FOREIGN KEY sur la table, et l'erreur de violation de contrainte transmet le contrôle au bloc CATCH. Le code à l'intérieur du bloc CATCH exécute la procédure stockée uspPrintError. Cette procédure imprime les informations d'erreur.

USE AdventureWorks;
GO
BEGIN TRY
    DELETE FROM Production.Product
        WHERE ProductID = 980;
END TRY
BEGIN CATCH
    EXECUTE dbo.uspPrintError;
END CATCH;
GO

Voir aussi

Autres ressources

Objets SQL Server dans AdventureWorks
CREATE PROCEDURE (Transact-SQL)
Exemples pour le moteur de base de données SQL Server
TRY...CATCH (Transact-SQL)

Aide et Informations

Assistance sur SQL Server 2005