J'ai des problèmes avec une procédure stockée (SQL 2005). J'ai une table appelée tbrm_Tags
avec deux colonnes, TagID
et TagName
. Je veux passer une valeur TagName
à la procédure stockée et puis je veux:Procédure stockée SQL 2005 pour renvoyer une valeur ou la créer si elle n'existe pas
- Vérifiez si le
Tagname
existe et si elle ne retourne laTagID
- Si le
Tagname
n'existe pas que je veux insérer dans la table et renvoyez leTagID
.
Voici la procédure stockée J'utilise:
@TagID int = null,
@TagName varchar(50)
AS
DECLARE @returnValue int
BEGIN
IF EXISTS (SELECT * FROM tbrm_Tags WHERE TagName = @TagName)
BEGIN
SELECT
TagID
FROM tbrm_Tags
WHERE TagName = @TagName
END
ELSE
BEGIN
IF NOT EXISTS (SELECT * FROM tbrm_Tags WHERE TagName = @TagName)
INSERT INTO tbrm_Tags
(
TagName
)
VALUES
(
@TagName
)
SELECT @returnValue = @@IDENTITY
END
END
RETURN @returnValue
Je ne peux pas obtenir l'instruction select pour retourner le TagID
lorsque le Tagname
existe.
Il y a une énorme différence. On utilise la valeur de retour du proc; l'autre renvoie une grille avec une cellule. Les deux sont incompatibles. La valeur de retour est un peu (pas massivement) plus efficace, et beaucoup plus propre si vous appelez de TSQL directement (INSERT/EXEC est un gâchis). –