我正在使用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',这超出了这个问题的范围。 –