PL/SQL中如何声明及使用动态游标
1个回答
展开全部
oracle动态游标问题: 游标查询的内容是 动态生成的,然后里面具体有多少个字段没办法事先知道,而动态游标赋值一定要用fetch到一个变量,有没办法把动态游标内容赋值到一个记录集或者表中,而这个表的字段和记录集字段是没办法预先定义好的,而是通过系统动态生成的!
具体例子如下:declare-- Local variables here
v_sql VARCHAR2(1024);
cur SYS_REFCURSOR;
v_column VARCHAR2(1024);
v_exe VARCHAR2(1024);begin---v_sql 是通过一连串的复杂逻辑程序生成的动态内容的 在这里就简单写了
v_sql:='select C_001,b_002,d_003 ..../*具体有多少个字段没办法事先知道*/from table1,table2 .../*具体有多少个字段没办法事先知道*/tablen where 1=1 and /*复杂条件*/';
v_column:= 'C_001+b_002/d_003';--这个变量也是通过复杂的逻辑生成的 没办法事先知道的 但是这里的字段都在 v_sql 中有
v_column := replace(replace(REPLACE(v_column,'b_','c.b_'),'c_','c.c_'),,'c_','c.d_');
FOR i IN 1..e_table(i);
v_exe:='INSERT INTO table_a SELECT'|| v_column||' FROM dual' ; /*这里的动态生成的*/!
具体例子如下:declare-- Local variables here
v_sql VARCHAR2(1024);
cur SYS_REFCURSOR;
v_column VARCHAR2(1024);
v_exe VARCHAR2(1024);begin---v_sql 是通过一连串的复杂逻辑程序生成的动态内容的 在这里就简单写了
v_sql:='select C_001,b_002,d_003 ..../*具体有多少个字段没办法事先知道*/from table1,table2 .../*具体有多少个字段没办法事先知道*/tablen where 1=1 and /*复杂条件*/';
v_column:= 'C_001+b_002/d_003';--这个变量也是通过复杂的逻辑生成的 没办法事先知道的 但是这里的字段都在 v_sql 中有
v_column := replace(replace(REPLACE(v_column,'b_','c.b_'),'c_','c.c_'),,'c_','c.d_');
FOR i IN 1..e_table(i);
v_exe:='INSERT INTO table_a SELECT'|| v_column||' FROM dual' ; /*这里的动态生成的*/!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询