gpt4 book ai didi

mysql - 如何在 sp_executesql 中使用来自其他存储过程的输入参数

转载 作者:行者123 更新时间:2023-11-29 23:04:51 25 4
gpt4 key购买 nike

我有带有输入参数@param1 @param2等的存储过程sp_Example。在sp_Example存储过程中我使用dynamic通过调用 sp_executesql 进行查询并返回结果。执行 sp_executesql 后,它无法看到 sp_Example 中的参数,并且出现以下错误:必须声明标量变量 @param2

这是我的 sp_Example 的示例:

CREATE PROCEDURE sp_Example
@param1 INT,
@param2 NVARCHAR(20) = ''
AS
BEGIN
IF (@param1 = 1)
BEGIN
-- There doesn't matter how select looks like so I pass dots
SELECT @cols += .... + ','
FROM (SELECT ....
FROM ....
WHERE ....
) a
SET @cols = LEFT(@cols, LEN(@cols) - 1)
SET @sql = 'SELECT * FROM
(
SELECT ....
FROM ....
WHERE FI.test = @param2 -- Here I'm trying to get input parameter
-- @param2 from sp_Example
) x
PIVOT
(
MIN (Val)
FOR NamePiv IN (' + @cols + ')
) p'

EXEC Sp_executesql @sql -- This one is IMPORTANT row
-- When this executed I got error:
-- That must declare scalar variable @param2

END
...
END

有什么解决办法吗?

最佳答案

您需要将 @Param2 传递给 sp_ExecuteSQL,如下所示:检查 sp_ExecuteSQL 上的语法是否正确

EXEC sp_ExecuteSQL @sql, N'@Param2 NVARCHAR(20)', @Param2

关于mysql - 如何在 sp_executesql 中使用来自其他存储过程的输入参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28337790/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com