Stored-Procedures
在沒有 Data Studio 的情況下編譯儲存過程時保留縮進格式
當我使用 CLPplus 控制台(甚至在 dBeaver 中)編譯儲存過程時,所有縮進都被刪除了。只有當我在 Data Studio 中編譯時才會保留格式,但我想用腳本部署項目。
我希望我缺少一些簡單的東西,但是找不到解決方案,甚至找不到任何其他具有相同問題的文章。
使用 CLPplus 我執行了這個腳本文件
@c:\temp\proc1.spsql
create or replace procedure proc1() begin declare vId int default 0; call dbms_output.put_line(vId+1); /* Testing */ end
SELECT TEXT FROM SYSCAT.PROCEDURES WHERE PROCNAME = 'PROC1';
產生了以下內容:create or replace procedure proc1() begin declare vId int default 0; call dbms_output.put_line(vId+1); /* Testing */ end
它在 clpplus 1.6 中對我來說很好用
$ clpplus -h | head -1 CLPPlus: Version 1.6 $ cat sql create or replace procedure proc1() begin declare vId int default 0; call dbms_output.put_line(vId+1); /* Testing */ end / SELECT TEXT FROM SYSCAT.PROCEDURES WHERE PROCNAME = 'PROC1' / $ clpplus -nw $user/"$password"@$host:$port/$database @"$PWD"/sql CLPPlus: Version 1.6 Copyright (c) 2009, 2011, IBM CORPORATION. All rights reserved. Database Connection Information : --------------------------------- Hostname = localhost Database server = DB2/LINUXX8664 SQL11054 SQL authorization ID = paul Local database alias = BP Port = 50003 DB250000I: The command completed successfully. create or replace procedure proc1() begin declare vId int default 0; call dbms_output.put_line(vId+1); /* Testing */ end SQL>
我不知道儲存過程中的 CLP 或 Dbeaver 條帶格式(不幸的是,CLP 中的視圖是另一回事)。
例如,這是來自 Dbeaver
CREATE PROCEDURE P() BEGIN RETURN 1; END
然後
SELECT TEXT FROM SYSCAT.PROCEDURES WHERE PROCNAME = 'P'
返回
CREATE PROCEDURE P() BEGIN RETURN 1; END
從命令行執行 Db2 11.5.4 ,我無法重現您的問題
$ db2 -td@ -vf test.sql create or replace procedure proc1() begin declare vId int default 0; call dbms_output.put_line(vId+1); /* Testing */ end DB20000I The SQL command completed successfully. $ db2 -x "SELECT TEXT FROM SYSCAT.PROCEDURES WHERE PROCNAME = 'PROC1'" | head --bytes 200 create or replace procedure proc1() begin declare vId int default 0; call dbms_output.put_line(vId+1); /* Testing */ end
如果您不喜歡 CLP 在查看 DDL 時所做的事情,但仍想從命令行工具創建它們,那麼您可以使用CLPPlus,因為我相信它不會去除格式。