Db2

如何讓 DBeaver 通過 Cursor 執行 DB2 UPDATE

  • April 20, 2021

以下查詢在通過 db2 命令從控制台執行時有效。但是通過 DBeaver 執行時失敗。

BEGIN NOT ATOMIC
 FOR R AS C CURSOR WITH HOLD FOR
   SELECT ROW_NUMBER() OVER() AS INDEX, ID
   FROM A_TABLE a
   WHERE a.ID BETWEEN 1 AND 1000
   ORDER BY a.ID
 DO
   UPDATE A_TABLE SET A_COL = 1 WHERE ID = R.ID;--
   IF MOD(R.INDEX, 100) = 0 THEN
     COMMIT;--
   END IF;--
 END FOR;--
 COMMIT;--
END;

DBeaver 給出以下結果

SQL 錯誤

$$ 42601 $$:在“WHERE ID = R.ID”之後發現了一個意外的標記“END-OF-STATEMENT”。預期的標記可能包括:“<psm_semicolon>”.. SQLCODE=-104, SQLSTATE=42601, DRIVER=4.26.14

正如 mustaccio 指出的那樣,您需要更改語句終止符。在 DBeaver 中,您可以通過以下方式做到這一點:

  1. 右鍵點擊數據源並選擇“編輯連接”
  2. 在底部最左邊的框架中,有SQL處理
  3. 選中數據源複選框

在此處輸入圖像描述

現在您可以更改語句分隔符

引用自:https://dba.stackexchange.com/questions/290053