J'ai créé une procédure stockée qui renvoie une valeur particulière, mais je ne parviens pas à stocker la valeur de retour de ma procédure stockée dans une variable scalaire.Utilisation de la procédure stockée du type de retour dans SQL
Je reçois cette erreur
Msg 102, niveau 15, état 1, ligne 2
syntaxe incorrecte près de '1/3/2014'.
Ceci est ma procédure stockée:
ALTER PROCEDURE SP_generatePaymentID
@date nvarchar(50),
@trainer nvarchar(50)
AS
BEGIN
DECLARE @result as int
DECLARE @paymentid as int
SET @date='2017-08-22'
SET @result = (SELECT COUNT(*) FROM finalinstructoreexpense
WHERE date = @date AND trainer = '@trainer')
IF (@result = 0)
BEGIN
SET @paymentid = (SELECT REPLACE(CONVERT(CHAR(10), @date, 103), '-', ''))
SELECT CAST(@paymentid AS NVARCHAR(MAX)) + '001'
END
ELSE
BEGIN
SET @paymentid = (SELECT TOP 1 paymentid
FROM finalinstructoreexpense
WHERE date = @date AND trainer = '@trainer'
ORDER BY paymentid DESC)
SELECT @paymentid + 1
END
RETURN @paymentid
END
Lorsque j'exécute la procédure
exec SP_generatePaymentID '2014-03-01','Benzir Pinjari'
ce me montre dans mon dossier fenêtre de résultat (20170822001
).
Ceci est mon résultat
mais lorsque je tente de stocker la valeur dans ma variable scalaire comme celui-ci
declare @paymentID as int
set @paymentID = SP_generatePaymentID '2014-03-01','Benzir Pinjari'
select @paymentID
Il jette une erreur
Msg 102, Niveau 15, State 1, Line 2
Syntaxe incorrecte près de '2014-03-01'.
Qu'est-ce qui ne va pas ici? Que dois-je faire pour stocker la valeur de sortie dans ma variable scalaire?
double possible de [Comment retourner la sortie de procédure stockée dans une variable dans le serveur SQL] (https://stackoverflow.com/questions/11965269/how-to-return-the-output -de-procédure-stockée-dans-un-serveur-de-variable-dans-sql) – scsimon
https://sqlperformance.com/2012/10/t-sql-queries/sp_prefix –
Pourquoi passez-vous une variable nommée date que est en fait un varchar et ensuite le définir à une valeur codée en dur? Les dates doivent être des dates, pas des chaînes. Et pourquoi s'embêter avec un paramètre ici? Je suggère d'ajouter un formatage à votre code, car c'est douloureux à regarder. Vous avez aussi vos paramètres @trainer sous forme de littéraux de chaîne, pas de paramètres. –