oracle execute immediate動態sql組合執行comment小記
create or replace procedure proc_auto_comment
as
v_number pls_integer;
v_repl_string varchar2(100);
v_sql varchar2(4000);
v_sqlerrm varchar2(1000);
begin
v_number:=2;
for i in 1..v_number loop
--因為動態sql如果出錯程式碼會一直hang在哪兒,為了快速診斷是什麼原因,新增異常
begin
execute immediate 'create table T_COMMENT_'||to_char(i)||'
(
A INTEGER,
B INTEGER
)';
exception when others then
v_sqlerrm:=sqlerrm;
dbms_output.put_line(v_sqlerrm);
exit;
end;
v_repl_string:='T_COMMENT_'||to_char(i);
begin
--暫時發現合併多個comment子句如用execute immediate會報無效字元,先分開編寫吧
v_sql:='comment on column '||v_repl_string||'.A is '||''''||'這是a'||''''||';'||chr(10)||chr(13)|| 'comment on column '||v_repl_string||'.B is '||''''||'這是b'||''''||';';
execute immediate v_sql;
exception when others then
v_sqlerrm:=sqlerrm;
dbms_output.put_line(v_sqlerrm);
exit;
end;
end loop;
end;
as
v_number pls_integer;
v_repl_string varchar2(100);
v_sql varchar2(4000);
v_sqlerrm varchar2(1000);
begin
v_number:=2;
for i in 1..v_number loop
--因為動態sql如果出錯程式碼會一直hang在哪兒,為了快速診斷是什麼原因,新增異常
begin
execute immediate 'create table T_COMMENT_'||to_char(i)||'
(
A INTEGER,
B INTEGER
)';
exception when others then
v_sqlerrm:=sqlerrm;
dbms_output.put_line(v_sqlerrm);
exit;
end;
v_repl_string:='T_COMMENT_'||to_char(i);
begin
--暫時發現合併多個comment子句如用execute immediate會報無效字元,先分開編寫吧
v_sql:='comment on column '||v_repl_string||'.A is '||''''||'這是a'||''''||';'||chr(10)||chr(13)|| 'comment on column '||v_repl_string||'.B is '||''''||'這是b'||''''||';';
execute immediate v_sql;
exception when others then
v_sqlerrm:=sqlerrm;
dbms_output.put_line(v_sqlerrm);
exit;
end;
end loop;
end;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-751203/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [20210426]execute immediate.txt
- 【SQL】Oracle避免動態SQL,提高過程執行效率SQLOracle
- EXECUTE IMMEDIATE 儲存過程中 許可權不足及EXECUTE IMMEDIATE的除錯避坑儲存過程除錯
- [ORACLE] SQL執行OracleSQL
- Mybatis 動態執行SQL語句MyBatisSQL
- Oracle sql執行計劃OracleSQL
- oracle comment on的用法Oracle
- Oracle - 執行過的SQL、正在執行的SQL、消耗資源最多的SQLOracleSQL
- oracle查詢sql執行耗時、執行時間、sql_idOracleSQL
- Oracle comment新增註釋Oracle
- 後臺執行SQL語句(oracle)SQLOracle
- 8086執行組合語言組合語言
- EBS:Oracle 資料庫執行慢SQLOracle資料庫SQL
- java連線oracle執行sql語句JavaOracleSQL
- Flowable 6.6.0 BPMN使用者指南 - 17 高階用例 - 17.5 執行自定義SQL(Execute custom SQL)SQL
- 執行緒池 execute() 的工作邏輯執行緒
- Java執行緒池中的execute和submitJava執行緒MIT
- Oracle SQL Profile固定執行計劃的方法OracleSQL
- Oracle提高SQL執行效率的三種方法ITOracleSQL
- Oracle資料庫SQL語句執行過程Oracle資料庫SQL
- oracle 透過pid 找到sid 再找出執行sqlOracleSQL
- 查詢oracle正在執行的SQL和事務OracleSQL
- AUTOCAD——拉伸陣列組合動態塊陣列
- 自己動手寫SQL執行引擎SQL
- 執行緒池小記錄執行緒
- 【SQL】Oracle sql語句 minus函式執行效率與join對比SQLOracle函式
- MyBatis動態代理執行原理MyBatis
- .Oracle固定執行計劃之SQL PROFILE概要檔案OracleSQL
- oracle常用後臺程序及sql語句執行流程OracleSQL
- Oracle 常用SQL筆記OracleSQL筆記
- 動態執行c#程式碼C#
- 獲取oracle sql語句詳細些執行計劃OracleSQL
- Oracle資料庫關於SQL的執行計劃(轉)Oracle資料庫SQL
- 在Oracle裡提高SQL執行效率的三種方法NQOracleSQL
- 【TUNE_ORACLE】定製化執行計劃SQL參考OracleSQL
- Oracle檢視sql_id 的歷史執行計劃OracleSQL
- Oracle DB 相關常用sql彙總7【手工繫結sql執行計劃】OracleSQL
- maven外掛執行過程中自動執行sql檔案MavenSQL
- 檢視mysql執行狀態的一些sqlMySql