8

以下でエラーが発生する理由がわかりません。コメントアウトした部分が関係しているのかと思ったのですが、@SQLがnvarchar(4000)になっています。

BEGIN
  sp_executesql N'SELECT ''td'''
  --sp_executesql @SQL, N'@StartDate DateTime, @EndDate DateTime, @End2 DateTime, @Program varchar(4)', @StartDate, @EndDate, @End2, @Program
END
4

3 に答える 3

15

これが理由です:

-- これは問題なく動作します:
始める
  -- sp_executesql の前に exec が必要です。そうしないと、ブロック内で機能しません。
  exec sp_executesql N'SELECT ''td'''
終わり

ブロック内にいるときは、 execなしでストアド プロシージャを呼び出すことはできません。

于 2009-08-18T22:57:11.237 に答える
3

これを BEGIN ... END で囲んでいるのはなぜですか? ブロックの外部で sp_executesql を実行すると機能します。

オプションで、 sp_executesql の前にexecを配置できます。

于 2009-08-18T22:56:18.350 に答える
0

場合によっては、マスターも使用する必要がありました。

exec master..sp_executesql 
于 2009-11-03T03:13:23.493 に答える