特定の値を返すストアドプロシージャを作成しましたが、ストアドプロシージャの戻り値をスカラー変数に格納できません。戻り値の型ストアドプロシージャをSQLで使用
私はこのエラーに
メッセージ102、レベル15、状態1、行2
'2014年3月1日' 付近に不適切な構文を取得しています。
これは私のストアドプロシージャです:私は手順
exec SP_generatePaymentID '2014-03-01','Benzir Pinjari'
を実行すると
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
これは私に私の結果ウィンドウ(20170822001
)のレコードを示しています。
これは私の結果
ですが、私はこの
declare @paymentID as int
set @paymentID = SP_generatePaymentID '2014-03-01','Benzir Pinjari'
select @paymentID
それはメッセージ102エラー
を投げている
、レベルのように私のスカラー変数に値を格納しようとすると、 15、状態1、行2
'2014-03-01'の近くの構文が正しくありません。
ここで何が間違っていますか?出力値をスカラー変数に格納するにはどうすればよいですか?
の可能性のある重複(https://stackoverflow.com/questions/11965269/how-to-return-the-output [SQLサーバー内の変数にストアドプロシージャの出力を返す方法]ストアドプロシージャをSQL Serverで変数に変換する) – scsimon
https://sqlperformance.com/2012/10/t-sql-queries/sp_prefix –
なぜ変数nameにdate実際にはvarcharであり、ハードコードされた値に設定しますか?日付は文字列ではなく日付でなければなりません。そして、なぜここでパラメータを気にしますか?私はあなたのコードにいくつかの書式を追加することをお勧めします。また、@trainerというパラメータは、文字列リテラルであり、パラメータではありません。 –