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

标签 mysql sql sql-server stored-procedures parameters

我有带有输入参数@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/

相关文章:

javascript - Node.js mssql 模块非常慢

php - mysql从前10名中随机抽取

c# - 在表适配器配置向导 Visual Studio 2015 中更改超时

sql - 如何在 group by 子句中按日期获取最新项目

php - 我可以排除复杂查询中满足条件的行吗? (组合 WHERE + 多重 AND)

sql-server - Python Turbodbc executemanycolumns 错误 : Unable to cast Python instance to C++ type (compile in debug mode for details)

sql-server - SQL Server 2008插入失败报告

php变量插入数据库

mysql - Sqlyog 错误 1452

sql - 我可以在 ODI 中的源变量中调用全局变量吗?