web-dev-qa-db-ja.com

SQLServerストアドプロシージャリンクサーバーからiSeriesへのゾーニングフィールドの更新中にエラーが発生しました

リンクサーバーを使用してSQLServerストアドプロシージャ内のiSeries(AS400)のテーブルを更新しようとしていますが、ゾーンとして定義されている列を更新しようとすると失敗します。

私のストアード・プロシージャーでは、値は整数として定義されており、iSeriesでは、小数点なしのゾーン6長として定義されています。

私は次のように整数をキャストしようとしました:

cast(@SysDate as NUMERIC(6))

しかし、まだエラーが発生しています:

メッセージ7343、レベル16、状態4、行1

リンクサーバー "PD999F98OWSEC"のOLE DBプロバイダー "MSDASQL"はテーブルを更新できませんでした。
行セットは楽観的同時実行性を使用しており、含まれている行が最後にフェッチまたは再同期された後、列の値が変更されました。

ゾーン化されたフィールドを更新から削除してもこのエラーは発生しないため、型変換の問題であると確信しています。

リンクサーバーは次のように定義されますOLE DB Provider for ODBC drivers and provider string is MSDASQL.1

ここでの助けは大歓迎です

2
Terry

IBMi DB2数値データ型:

RPGLE-説明-DB2SQL

P-パック10進数-DECIMAL-DEC

S-ゾーン10進数-NUMERIC-NUM

1