3

dbexpress ドライバーを 10 から 11 に移行する際に問題が発生しました。

SQL Server で更新ステートメントを実行する次のコードがあります。

sql.add('UPDATE mytable SET myfield=:AFIELD');
ParamByName('AFIELD').AsString := 'Some random string that is too long for the field';
Open;

SQL エラー例外が発生し、実行が停止します。 文字列型やバイナリは省略されます

これは、myfield の文字列がテーブルのフィールド長よりも長いことが原因です。myfield は Varchar(10) です。

以前は、コードは正常に機能し、フィールドに入る文字列は自動的に 10 文字に切り捨てられました。

自動切り捨てが機能するように接続を構成するためのヒントを提供できるかどうか疑問に思っていました. または回避策。ありがとうございました!~~~

4

1 に答える 1

2

コマンドを発行できますSET ANSI_WARNINGS OFF

ただし、SQL Server には ANSI_WARNINGS をオンにする必要がある機能があるため、これはあまりお勧めできません。

したがって、データを自分で切り捨てることをお勧めします。

ParamByName('AFIELD').AsString := Copy(VeryLongString, 1, 10);

于 2011-04-10T07:44:38.943 に答える