1

ODBC 異種接続を使用して Oracle データベース (11.2.0.4) 経由で SQL Server 2000 データベース上で実行される Update ステートメントで IS NULL 条件を使用すると問題が発生します。

動作しない update ステートメントの例。

UPDATE TABLENAME@RemoteSQLServer2000
  SET "ColumnName" = 'SomeValue'
WHERE "AnotherColumnName" IS NULL;

結果:

ORA-02070: データベース RemoteSQLServer2000 は、このコンテキストでは IS NULL をサポートしていません

ただし、次のステートメントは正常に機能します。

SELECT *
  FROM TABLENAME@RemoteSQLServer2000
 WHERE "AnotherColumnName" IS NULL;

この仕事をするために私ができることについて誰かが考えを持っていますか? 前もって感謝します。さらに情報が必要な場合はお知らせください。

4

2 に答える 2

1

@MickMnemonic と別のコンサルタントのおかげで、解決策を見つけることができました。

Oracle には、アプリケーションから SQL Server データベースに対して SQL を実行できるパッケージがあります。この関数を使用すると、NULL 値でフィルタリングしている質問で言及されているようなステートメントを正常に実行できます。 DBMS_HS_PASSTHROUGH に関する Oracle ドキュメント

以下は、機能する新しいコードの例です。

DECLARE
   num_rows   INTEGER;
BEGIN
   num_rows :=
      DBMS_HS_PASSTHROUGH.EXECUTE_IMMEDIATE@RemoteSQLServer2000 (
         'UPDATE TABLENAME SET "ColumnName" = ''SomeValue'' WHERE AnotherColumnName IS NULL');
END;
/
于 2015-03-23T20:18:42.620 に答える
0

Where AnotherColumnName is null の代わりに where 句でこれを試してください

AnotherColumnName || どこで 'x' = 'x'

于 2016-09-01T14:17:21.507 に答える