我正在使用EXEC語句,並且OUTPUT始終爲NULL。這對我來說是個問題。我需要一些方法來確定INSERT語句是否成功。或者,我可以刪除查詢的@bogusTable和INSERT部分,並測試底層的SELECT語句是否收集到任何結果,但我總是在該OUTPUT上獲得NULL。SQL Server EXEC OUTPUT總是NULL
下面是該查詢:
SET @mainQuery = '
DECLARE @bogusTable TABLE(
someField VARCHAR(MAX) NULL
);
INSERT INTO @bogusTable SELECT someField FROM someTable WHERE anINT = ' @randINT
EXEC sp_executesql @mainQuery, N'@tempParam INT OUTPUT', @[email protected] OUTPUT
IF (@someInt IS NULL)
BEGIN
--This always executes even when the INSERT statement in @mainQuery doesn't insert anything
END
這不是你應該如何添加'@ randINT'到執行的SQL語句。你在哪裏設定'@ tempParam'的值?我看到聲明和輸出的期望,但是在執行的腳本中,它爲'@ tempParam'分配一個值? – SqlZim
如果你打算在參數中使用'sp_executesql',爲什麼你仍然在粗略的字符串連接中插入'@ randInt'的值? –
如果添加一個'DECLARE @tempParam INT'高於一切,它每次都會輸出NULL。 另外,我有理由需要'@ mainQuery'來注入'@ randInt',這超出了這個問題的範圍。 –