3

私はこれに対する答えをずっと探していましたが、明確なものは何もないので、誰かが頭のてっぺんから知っていることを願っています。

変数で使用EXECUTEする場合、文字数制限はありますか?VARCHAR(MAX)私はいくつかの実験を行いましたが、変数をロードしてから呼び出すとEXECUTE @var、実際にサーバーに渡されるものに文字制限があるようです。変数なしで呼び出しEXECUTEて、そこに文字列を作成するだけで、すべてが機能しているように見えます。これには理由がありますか?返されるエラーメッセージは次のとおりです。

名前'(ここに私のSQLステートメント変数の881文字のうち約643文字を挿入)'は有効な識別子ではありません

なぜこれが起こっているのかについて誰かが知っていますか?EXECUTE @var失敗、EXECUTE 'string'動作...

4

2 に答える 2

5

exec @mystr --文字列がプロシージャ名であり、8000バイトに制限されていると想定します。

exec(@mystr)--2ギガバイトの制限があります。

于 2012-12-09T22:53:13.340 に答える
3

msdnによると、SQL Server 2008では、制限は最大2GBの文字列のようです。

文字列でのEXECUTEの使用

以前のバージョンのSQLServerでは、文字列は8,000バイトに制限されていました。これには、動的に実行するために大きな文字列を連結する必要があります。SQL Serverでは、varchar(max)およびnvarchar(max)データ型を指定して、文字列を最大2ギガバイトのデータにすることができます。

ここにすべての情報へのリンクがあります。

問題が発生している場合は、変数の文字列を連結する方法である可能性があります。

于 2012-11-26T15:18:00.977 に答える