J'ai deux tables et une procédure stockée simple. Je veux utiliser la procédure stockée pour insert dans table1 avec l'un des parameters étant la key primaire.
Voici où j'ai des problèmes:
Je veux l'avoir de sorte que si la key parm / primary que l'user a input dans la procédure stockée et que l'exécution est déjà sur la table, alors il écrit les champs dans une seconde table ainsi que la description de l'erreur.
Comment capturer / afficher cette information d'erreur?
Procédure stockée (sans la journalisation des erreurs):
CREATE PROCEDURE procedure1 @Primary INT, @Info NVARCHAR AS BEGIN SET NOCOUNT ON INSERT INTO Table1 ( Primary , Info ) VALUES ( @Primary , @Info ) END
Merci
CREATE PROCEDURE dbo.InsertSomething ( @PrimaryKey INT , @Info NVARCHAR(MAX) ) AS BEGIN IF EXISTS (SELECT 1 FROM dbo.Table1 WHERE ID = @PrimaryKey) BEGIN INSERT INTO dbo.Table2 (ID, Info) VALUES (@PrimaryKey, @Info); RAISERROR (15600,-1,-1, 'Your custom message'); END ELSE BEGIN INSERT INTO dbo.Table1 (ID, Info) VALUES (@PrimaryKey, @Info); END END
Tout ce que vous avez à faire est une simple vérification si l'logging existe déjà dans la première table, et si elle ne fait que l'insert dans l'erreur et de lancer.