首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

Oracle 10g数据库游标的运用学习三(实践)

2012-12-26 
Oracle 10g数据库游标的使用学习三(实践)需求说明S132877699668612为服务模板ID,每一个服务模板下面有多条

Oracle 10g数据库游标的使用学习三(实践)
需求说明
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) := '<common_config><start_cmd></start_cmd><stop_cmd></stop_cmd><forced_stop_cmd></forced_stop_cmd><check_cmd></check_cmd><restart_cmd></restart_cmd><ts_classpath></ts_classpath><log><file_prefix></file_prefix><level>debug</level><show_io_log>true</show_io_log><log4j-configuration><appender><class>DailyRollingFileAppender</class><name>dailyrollingfile</name><param><name>maxfilesize</name><value></value></param><param><name>datepattern</name><value>yyyy-MM-dd</value></param><param><name>intervalmin</name><value></value></param><param><name>maxbackupindex</name><value></value></param><param><name>flush_immediately</name><value>true</value></param><param><name>file</name><value>$LOGPATH/aierr/</value></param><layout><class>SimpleLayout</class></layout><param><name>max</name><value></value></param></appender><root><priority><value>trace</value></priority><appender-ref><ref>dailyrollingfile</ref></appender-ref></root></log4j-configuration><path>$LOGPATH/</path></log></common_config>';  pipeline_init_data varchar2(4000) := '<pipe_line><pipe_line_configs><sysinfo /></pipe_line_configs><pipe_line_id>1</pipe_line_id><pipe_line_name>ts</pipe_line_name><pipe_line_type>business</pipe_line_type></pipe_line>';    --服务模板查询条件  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       insert into cfg_runtime_data(uri, app_code, data, lastup_date, is_compress)       values(srv_tp_cfg_prefix || srv_tp_id || '_common_1', 'clound', RAWTOHEX(common_init_data), sysdate, 0);     end if;        if pipeline_flag = 1     then       insert into cfg_runtime_data(uri, app_code, data, lastup_date, is_compress)        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;

热点排行