Db2
如何讓 DBeaver 通過 Cursor 執行 DB2 UPDATE
以下查詢在通過 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 中,您可以通過以下方式做到這一點:
- 右鍵點擊數據源並選擇“編輯連接”
- 在底部最左邊的框架中,有SQL處理
- 選中數據源複選框
現在您可以更改語句分隔符