oracle利用游标批量生成打印语句

DECLARE CURSOR CURSOR_MODEL_NAME IS
SELECT * FROM (select temp.es_table_name, dti.column_name , temp.ori_bus_key ,temp.ori_table_id,temp.ori_table_name
from ES_TEST_TEMP temp join
(
select ori_table_id ,substr ( concat_column , 1, length(concat_column)-1 ) as column_name from (
SELECT a.tb_id as ori_table_id,
xmlagg(xmlparse(content('a.' || a.column_name )|| ',' wellformed ) order by a.id).getclobval() as concat_column
FROM data_item_info_bak a -- where a.table_name ='ORI__SYRK__P_XTZD_BYZK'
GROUP BY a.tb_id )
)dti on dti.ori_table_id =temp.ori_table_id
order by temp.ori_table_id asc) MODEL_TABLE_NAME ;
--定义游标容器 REC_VARS
REC_VARS CURSOR_MODEL_NAME%ROWTYPE ; --MODEL_TABLE_NAME 需要替换
BEGIN
execute immediate ' truncate table print_create_runwhole_es_sql ' ;
OPEN CURSOR_MODEL_NAME ;
LOOP
FETCH CURSOR_MODEL_NAME INTO REC_VARS ;
EXIT WHEN CURSOR_MODEL_NAME%NOTFOUND;
--循环体
insert into print_create_runwhole_es_sql select REC_VARS.es_table_name, 'spark {
spark.streaming.batchDuration = 5
spark.app.name = "application_hiveToEs_' ||REC_VARS.ori_table_id|| '"
spark.executor.instances ="5"
spark.executor.cores="8"
spark.executor.memory="20g"
spark.driver.memory="6g"
spark.driver.cores="8"
}
input {
hive {
pre_sql = "select ' || REC_VARS.column_name || ' from (select * ,row_number()over(partition by ' ||REC_VARS.ori_bus_key ||' order by rksfm desc ) riadd from original.' || REC_VARS.ori_table_name ||' ) a where a.riadd =1 "
result_table_name = "hive_test_1110"
}
}
filter{}
output {
com.zdxf.bdwh1.datareverse.output.es.EsOutputRdd1{
es.nodes = "53.80.10.101,53.80.10.102,53.80.10.103"
es.port = "39200"
es.index.name = "' || REC_VARS.es_table_name || '"
es.batch.size.entries = 100000
}
stdout {}
}' from dual ;
commit ;
END LOOP;
CLOSE CURSOR_MODEL_NAME ;
END;

posted @ 2022-12-16 14:30  鸠兹  阅读(166)  评论(0)    收藏  举报