Oracle 10g資料庫游標的使用學習三(實踐)

2021-06-26 16:19:15 字數 3148 閱讀 1067

需求說明

s132877699668612為服務模板id,每乙個服務模板下面有多條服務模板配置資料,如下:

/config/cpf/bm_tp_service_cfg/data/s132877699668612_common_1

/config/cpf/bm_tp_service_cfg/data/s132877699668612_pipeline_1

/config/cpf/bm_tp_service_cfg/data/s132877699668612_m101_1

但是現在資料庫中出現了一些服務模板下面的配置資料缺失,主要是缺失_common_1和_pipeline_1,現在需要手動用sql指令碼去彌補缺失

-- created on 2012/12/20 by zhengtian 

declare

--服務模板id

srv_tp_id varchar2(256);

--服務模板uri

srv_tp_uri varchar2(256);

--服務模板配置id

srv_tp_cfg_id varchar2(256);

--服務模板配置uri

srv_tp_cfg_uri varchar2(2000);

--是否存在common標誌位

common_flag integer;

--是否存在pipeline標誌位

pipeline_flag integer;

--common和pipeline的初始化資料

common_init_data varchar2(4000) := 'debug

dailyrollingfile

maxfilesize

datepattern

yyyy-mm-dd

intervalmin

maxbackupindex

flush_immediately

true

file

$logpath/aierr/

******layout

maxtrace

$logpath/

'; pipeline_init_data varchar2(4000) := '1tsbusiness';

--服務模板查詢條件

srv_tp_prefix varchar2(256) := '/config/cpf/bm_tp_service/data/';

--查詢資料庫中所有的服務模板的uri

cursor cursor_srv_tp_sel is select t.uri from cfg_runtime_data t where t.uri like srv_tp_prefix || '%';

--服務模板配置查詢條件

srv_tp_cfg_prefix varchar2(256) := '/config/cpf/bm_tp_service_cfg/data/';

srv_tp_cfg_sql varchar2(512);

cursor_srv_tp_cfg_sel sys_refcursor;

begin

--迴圈結果集

for flow_tp in cursor_srv_tp_sel loop

srv_tp_uri := flow_tp.uri;

--dbms_output.put_line('uri:' || srv_tp_uri);

srv_tp_id := substr(srv_tp_uri,length(srv_tp_prefix)+1,length(srv_tp_uri));

--dbms_output.put_line(srv_tp_id);

--組裝查詢服務模板配置的sql

srv_tp_cfg_sql := 'select t.uri from cfg_runtime_data t where t.uri like ''' || srv_tp_cfg_prefix || srv_tp_id || '%''';

--dbms_output.put_line(srv_tp_cfg_sql);

--初始化標誌位

common_flag := 0;

pipeline_flag := 0;

--查詢服務模板配置

open cursor_srv_tp_cfg_sel for srv_tp_cfg_sql;

loop fetch cursor_srv_tp_cfg_sel into srv_tp_cfg_uri;

exit when cursor_srv_tp_cfg_sel%notfound;

srv_tp_cfg_id := substr(srv_tp_cfg_uri,length(srv_tp_cfg_prefix)+length(srv_tp_id)+1,length(srv_tp_cfg_uri));

--dbms_output.put_line(srv_tp_cfg_id);

if srv_tp_cfg_id = '_common_1' then common_flag := 1;

end if;

if srv_tp_cfg_id = '_pipeline_1' then pipeline_flag := 1;

end if;

end loop;

if common_flag = 1

then

values(srv_tp_cfg_prefix || srv_tp_id || '_common_1', 'clound', rawtohex(common_init_data), sysdate, 0);

end if;

if pipeline_flag = 1

then

values(srv_tp_cfg_prefix || srv_tp_id || '_pipeline_1', 'clound', rawtohex(pipeline_init_data),sysdate, 0);

end if;

end loop;

--提交

--commit;

dbms_output.put_line('修改完成!');

exception

when others then dbms_output.put_line(sqlerrm);

end;

Oracle 10g資料庫游標的使用學習一

使用游標 1 9i以前的使用方法,一次取一條資料 1 顯示游標 declare 定義游標 cursor temp cursor is select t.name,t.english name from communitytype t where t.community type id ebook 定...

Oracle 10g資料庫游標的使用學習三(實踐)

b 需求說明 b s132877699668612為服務模板id,每乙個服務模板下面有多條服務模板配置資料,如下 config cpf bm tp service cfg data s132877699668612 common 1 config cpf bm tp service cfg data...

Oracle 10g資料庫管理

oracle 10g資料庫管理 課程介紹 本課程面向企業 oracle 10g 資料庫管理的學員。通過 oracle 10g 資料庫管理課程的系統培訓,使學員能夠在較短的時間內掌握 oralcle10g 資料庫管理和維護的各種技術,從而掌握最新版 oracle 的新特性和 oracle 資料通用技術...