1

我创建了一个存储过程,并在尝试使用 exec 'procedure_name' 语句调用它时收到以下错误。该过程在前半部分有一大块静态 SQL 代码,在后半部分有动态代码......

calcNums(Param1, Param2, etc...)
--------
DECLARE a bunch of variables
--------

STATIC CODE here

-------
SET @SQL = DYNAMIC CODE

EXEC @SQL

我选择了正确的数据库连接,并使用 dbo 创建了该过程。架构前缀。

如果我在没有任何参数的情况下调用该过程,那么我会收到一个错误...

过程或函数“calcNums”需要未提供的参数“Param1”。

否则它会给我错误...

Could not find stored procedure ' '.

谁能告诉我为什么我会收到这个错误?

4

1 回答 1

5
  1. 确保@sqlNVARCHAR.

  2. 你不能说EXEC @sql。你应该使用:

    EXEC sp_executesql @sql;
    

    如果@sql只是一个过程名称,那么更明确可能会更好:

    SET @sql = N'EXEC ' + @sql;
    EXEC sp_executesql @sql;
    

    懒惰的解决方法是使用以下方法,但我认为上述方法更好,特别是如果您的某些参数可以显式传入:

    EXEC(@sql);
    
于 2013-11-06T18:46:50.680 回答