0
我有一個存儲過程,它執行查詢並調用dbmail。郵件消息包含執行的查詢結果。我想在這兩個地方向查詢傳遞一個參數/變量:存儲過程和dbmail中的@query。以下是我想如何運行它,但由於參數(@Threshold)未傳遞到dbmail塊,所以出現錯誤。我怎樣才能做到這一點?需要將存儲過程中的參數傳遞給sp_send_dbmail @query
ALTER PROCEDURE [dbo].[spMyProcedure] @Threshold float
AS
IF EXISTS (SELECT Fields FROM Table
WHERE DataValue < @Threshold AND LocalDateTime >= DATEADD(hour, -24, SYSDATETIME())
GROUP BY Fields)
BEGIN
SET NOCOUNT ON
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'Profile',
@from_address = '[email protected]',
@recipients = '[email protected]',
@subject = 'Data Warning',
@body = 'The following results are outside the defined range.',
@query = 'SELECT Fields FROM Table
WHERE DataValue < @Threshold AND LocalDateTime >= DATEADD(hour, -24, SYSDATETIME())
GROUP BY Fields' ;
END
在我看來,像你的解決方案應該工作,但我得到這個錯誤: 消息22050,級別16,狀態1,行0 錯誤格式查詢,可能是無效的參數 消息14661,級別16 ,狀態1,過程sp_send_dbmail,行517 查詢執行失敗:消息105,級別15,狀態1,服務器WIN-O9R9U2CPD6B,第2行 字符串'i '後未使用引號。 Msg 102,Level 15,State 1,Server WIN-O9R9U2CPD6B,Line 2 'i '附近的語法不正確。 – user3229811
我使@qry字符串的大小太小,並且截斷了字符串。我相應地更新了示例。 – cdev
是的,我設置了@qry VARCHAR(500),它工作得很好。謝謝。 – user3229811