我有一个需求如下:
我有好几组表,如A,B,C,D,E
现在我要写一个存储过程,将A表中的内容和B表中的内容合并成一个C表,
当然这里的A表,B表,C表,都是存储过程的参数,还有条件。
如下格式,
create or replace procedure proc_test_a(tab1 in varchar2,tab2 in varchar2,tab3 in varchar2 ,condition in varchar,tab1fields in varhcar2,tab2fields in varhcar2,tab3fields in varhcar2,)也就是说,由表名,字段,条件都由用户传入,事先不确定。如何来写,,请大家指点。
我有好几组表,如A,B,C,D,E
现在我要写一个存储过程,将A表中的内容和B表中的内容合并成一个C表,
当然这里的A表,B表,C表,都是存储过程的参数,还有条件。
如下格式,
create or replace procedure proc_test_a(tab1 in varchar2,tab2 in varchar2,tab3 in varchar2 ,condition in varchar,tab1fields in varhcar2,tab2fields in varhcar2,tab3fields in varhcar2,)也就是说,由表名,字段,条件都由用户传入,事先不确定。如何来写,,请大家指点。
type curtype is ref cursor;
mycur curtype;
....
open mycur for 'select .... from .... where ....';close mycur;
我想fetch mycur into 变量这个变量怎么定义。
你就直接传sql语句
.....
type my_type is record(str varchar2(100));
type cur is ref cursor ;
my_cur cur;
rs my_type;begin
sql_str:='select '||p_col2||' from '||table_name||' where '||p_col1||'='||p_value;
open my_cur for sql_str;
loop
fetch my_cur into rs;
exit when my_cur%notfound;
result :=result || rs.str || ',';
end loop;
close my_cur ;--关闭游标....
所以,你的my_type里只有一个varchar2类型,
不行的。。比如说, select a,b,c from test where a>2我需要传入的参数是 'a,b,c' 'test' 'a>2'三个参数,
有人说传入整个SQL语句,但是我也无法获得每行每一个字段的值啊。
execute immediate Insert_head;
假如表abc(a,b,c)
现在传字段a,b,c 及表名abc装成动态sql及游标都没有问题.
问题是我想对单独对a,b,c做一些处理,
所以我要分别将a,b,c三个字段的内容取出,
问题是出在取出上,,如果取出,保存到变量,这个变量如何定义,
定义成什么类型???