2017-01-31 1 views
0

J'ai créé un déclencheur qui va exécuter une procédure stockée sur INSERT:Exécuter une procédure stockée dans un déclencheur dans le serveur SQL avec des paramètres

USE [DB] 
GO 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
ALTER TRIGGER [dbo].[trigger_name] ON [dbo].[table_name] 
    AFTER INSERT AS 
    BEGIN 
    SET NOCOUNT ON 
    EXEC procedure_name_exec param1, param2, param3 
    END 

ce que je veux atteindre est d'exécuter la procédure stockée avec des paramètres qui représente la ligne qui vient d'être insérée et qui a déclenché ce déclencheur.

+0

merci pour le modifier @TheGameiswar – Claritta

+1

Étant donné que les paramètres doivent être des valeurs de la ligne (s) étant inséré vous va devoir utiliser une boucle ici parce que la table insérée peut et aura plus de 1 rangée. Vous devrez appeler cette procédure pour chaque ligne. –

+0

Je ne veux pas de boucle, le déclencheur devrait exécuter la procédure chaque fois qu'une ligne est insérée. – Claritta

Répondre

-2

Voici ce que recherchait et m'a donné le résultat que je recherchais:

USE [DB] 
GO 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
ALTER TRIGGER [dbo].[trigger_name] ON [dbo].[table_name] 
    AFTER INSERT AS 
    BEGIN 
    SET NOCOUNT ON 
    declare @var1 DATETIME 
    SELECT @var1 = inserted.[column name] 
    FROM inserted 

    EXEC procedure_name_exec @var1 
    END 
+0

Ceci est vicié logiquement parce que la table insérée est une table, pas un ensemble de valeurs scalaires. Si ce que vous capturez à partir de la procédure est pertinent pour les données de ligne, vous rencontrez un problème majeur dans votre code. –