0

潜在的に長いエラー文字列を格納したいフィールドがテーブルにあります。このために、データ型としてvarchar(MAX)を選択しました。テーブルにそのデータを入力するために使用されるストアドプロシージャを作成し、フィールド「ErrorDescription」に次のパラメータ定義を使用しました。

@ErrorDescription as varchar(MAX)

問題は、ストアドプロシージャを呼び出してエラーをログに記録するADOプロシージャ(Access 2003内)内にあります。エラーの説明を文字列値として受け取り、それをパラメータに割り当てようとします...

cmd.Parameters("@ErrorDescription").Value = errorDescription

しかし、次のエラーで失敗します。

「パラメータオブジェクトが正しく定義されていません」

ストアドプロシージャの定義を...に変更すると

 @ErrorDescription as varchar(255)

その後、すべてがうまく機能します。非常に長い可能性のある文字列を受け入れるようにストアドプロシージャパラメータを定義するにはどうすればよいですか?varchar(MAX)使用するデータ型が間違っていませんか?ありがとうございました。

編集私が使用していたSQLServerのバージョンについて言及する必要がありました。SQLServer2008を使用しています。

4

3 に答える 3

2

varchar(MAX)SQLServerバージョン2005で導入されました。2000バージョンを使用していると思います。もしそうなら、あなたは使用を枯渇させることができますvarchar(8000)またはText

于 2010-10-18T16:49:45.637 に答える
2

これはSQL2005で導入されたため、Access 2003はMAXキーワードが何を表しているのかわからないと思います。データ型を使用してAccessをだまし、 SQLでこれを列TEXTに正しくマップできるかどうかはわかりません。VARCHAR(MAX)でも。

于 2010-10-18T17:07:02.080 に答える
0

まず、データベースの列の定義を調べて、データ型を確認します。

SQL_LONGVARCHARは、メモフィールドにマップされるサーバータイプです。これは、このデータに必要なAccessデータタイプであると想定しています。その仮定が正しければ、サーバーのデータ型をSQL_LONGVARCHARに変更する必要があるようです(たとえば、「varchar(max)」ではなく「text」型として列を作成します)。

于 2010-10-18T16:51:12.963 に答える