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. @sqlであることを確認してくださいNVARCHAR

  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 に答える