0

WHERE 句のない UPDATE クエリは正常に機能します。しかし、WHERE句を使用するとエラーが表示されます

ORA-28536: 異機種間サービスの初期化パラメータの処理中にエラーが発生しました
ORA-28507: データ ディクショナリ ビュー sys.hs$_class_initにエラーが発生しました
ORA-02063: MYSQL_ATULSSO の前の 2 行
ORA-00604: 再帰 SQL レベル 1 でエラーが発生しました
ORA-02067: トランザクションまたはセーブポイントのロールバックが必要です
ORA-00604: 再帰的 SQL レベル 1 でエラーが発生しました
ORA-02067: トランザクションまたはセーブポイントのロールバックが必要です。

私のコード:

DECLARE
  A NUMBER(15) := 70;
  B NUMBER(15) := 69;
BEGIN
  UPDATE ATL1_SSO_ACCESS_REQ_DETAILS A SET A.REQ_ID = B;
  DBMS_OUTPUT.PUT_LINE('done11');
  UPDATE ATL1_SSO_ACCESS_REQ_DETAILS A SET A.REQ_ID = B WHERE A.REQ_ID = A;
  COMMIT;
  DBMS_OUTPUT.PUT_LINE('done');

EXCEPTION
  WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE('not done1');
    COMMIT;
END;

出力: done1 未完了

4

2 に答える 2

0

答えが出ました。データベースリンクから更新できます。以下は構文です

UPDATE "*DB_NAME*"."*TABLE_NAME*"@"*DB_LINK*"
SET "*DB_NAME*"."*TABLE_NAME*"."*COLUMN_NAME*"@"*DB_LINK*"= 'r2' 
WHERE "*DB_NAME*"."*TABLE_NAME*"."*COLUMN_NAME*"@"*DB_LINK*"='r1';

例:

UPDATE "atul_sso"."ATL_SSO_ACCESS_REQ_DETAILS"@"mysql_atulsso.atul.co.in"
SET "atul_sso"."ATL_SSO_ACCESS_REQ_DETAILS"."REQ_TYPE"@"mysql_atulsso.atul.co.in"= 'r2' 
WHERE "atul_sso"."ATL_SSO_ACCESS_REQ_DETAILS"."REQ_TYPE"@"mysql_atulsso.atul.co.in"='r1';

もう一つ疑問が残ります。Synonym を使用して更新できません。構文はありますか?

于 2018-06-28T05:14:10.963 に答える