カスタム文字列をintである変数と連結しようとしています。 Investigation is pending for ['+ @investigationidout +']
。最初の+
記号の上にマウスポインターを置くと、次のように表示されます。
「+」付近の構文が正しくありません
これは可能ですか?
私は次のようなものを見る必要があります:
調査は1234まで保留中です
私のクエリ:
EXEC sp_wf_create_notification
@processid,
@vactivityid,
@vstepid,
1,
@vidColumn,
@vidColumnTable,
@investigationidout,
@owner,
'Pending Investigation',
'Investigation is pending for ['+ @investigationidout +'] '
@nextstepurl,
@vstatus OUTPUT,
@verror OUTPUT
プロシージャに提供されるパラメータは、定数または変数である必要があります。関数または関数の出力または式は使用できません。
最初に、必要な式で変数を設定する必要があります。
declare @investigation varchar(100);
set @investigation = 'Investigation is pending for ['+ @investigationidout +'] ';
EXEC sp_wf_create_notification
@processid,
@vactivityid,
@vstepid,
1,
@vidColumn,
@vidColumnTable,
@investigationidout,
@owner,
'Pending Investigation',
@investigation
@nextstepurl,
@vstatus OUTPUT,
@verror OUTPUT
;
OUTPUT
変数の場合は、名前の後にOUTPUT
を追加することを忘れないでください。
MSDN Specify Parameters を参照してください。
プロシージャー呼び出しで提供されるパラメーター値は、定数または変数でなければなりません。関数名はパラメーター値として使用できません。変数は、@@ spidなどのユーザー定義変数またはシステム変数です。
たとえば、連結した文字列をストアドプロシージャに渡すために次のようなことをしました
select top 10 * from sbat
declare @string varchar(max) = 'Rows inserted:' + cast(@@ROWCOUNT as varchar)
exec proc_Log @msg = @string, @tablename = 'STG_SBAT_test'