1
ALTER TRIGGER [dbo].[AlertMail_tr]
ON 
[dbo].[MethodToLog_tbl]
AFTER INSERT 
AS      
BEGIN
DECLARE @LogId int
SET @LogId = (SELECT LogDataId FROM inserted)
if(SELECT Failure_flag FROM inserted)=1
begin
        exec [DB].[dbo].SendMail_prc
        @Command='EXEC CheckNew.dbo.FailureMail_prc @LogId'
        ,@MailPriority=1
        ,@MailRecipients='abc@xyz.com'
        ,@Subject='Alert-Failure'

end
END

このエラーが発生しています:

スカラー変数 @LogId を宣言する必要があります。

4

2 に答える 2

2
@Command='EXEC CheckNew.dbo.FailureMail_prc @LogId='+cast ( @LogId as nvarchar(100))

また

@Command='EXEC CheckNew.dbo.FailureMail_prc '+cast ( @LogId as nvarchar(100))

また 、

文字列クエリを実行する前に入力し てください。@LogId

編集

declare @tmp nvarchar(max)
set @tmp='EXEC CheckNew.dbo.FailureMail_prc '+cast (@LogId as nvarchar(100))



 exec [DB].[dbo].SendMail_prc
        @Command=@tmp
        ,@MailPriority=1
        ,@MailRecipients='abc@xyz.com'
        ,@Subject='Alert-Failure'
于 2012-04-16T09:28:30.223 に答える
0

@LogId 変数が EXEC コマンドのスコープに存在しません。中身しか見えないので、コンサートである限りラインDECLARE @LogId intは存在しません。

変数の値がすでに含まれている文字列を渡す必要があります。

declare @aux varchar(100)
set @aux ='EXEC CheckNew.dbo.FailureMail_prc '+cast ( @LogId as varchar(10)) 

        exec [DB].[dbo].SendMail_prc
        @Command=@aux
        ,@MailPriority=1
        ,@MailRecipients='abc@xyz.com'
        ,@Subject='Alert-Failure'

もちろん、必要に応じて長さを修正してください

于 2012-04-16T09:44:04.867 に答える