1

次のような文字列があります。

set @sqlstring = N'select @mindate = min(time), @maxdate = max(time) from ' + @st_churn_active_table;

それを印刷すると、次のようになります。

derp.derp_table から @mindate = min(時間)、@maxdate = max(時間) を選択します

次のようなパラメーター定義で sp_executesql を実行します。

execute sp_executesql @sqlstring, N'@maxdate date,@mindate date'

次のようにエラーになります。

パラメータ化されたクエリ '(@maxdate date,@mindate date)select @mindate = min(time), @maxda' は、指定されていないパラメータ '@maxdate' を想定しています。

文字列は
'(@maxdate date,@mindate date)select @mindate = min(time), @maxda' になり
ます SQL文字列が途切れています.理由と修正方法を知っている人はいますか?

ありがとう!

4

2 に答える 2

1

まず、SQL Server は文字列全体を見ました。それを切り捨てるのはエラーメッセージだけです。切り捨てられた SQL 文字列には名前の一部しか含まれていませんでしたが、エラーが不足しているパラメーターの名前を正しく取得していることに注意してください。

第二に、これはあなたが望むようには機能しません。sp_executesql で出力パラメーターをそのように使用することはできません。

しかし、最後に、なぜエラーが発生するのかという問題に。確かではありませんが、ここでの問題は、型の不一致があるため、指定したパラメーターを使用できないことだと思います。そのような状況でSQLサーバーがより良いエラーメッセージ(型の不一致について不平を言う)をスローすることを願っていますが、テストするのに便利なSQLサーバーがなく、これが原因となる他の理由は考えられません問題。

于 2011-10-04T18:00:41.230 に答える