比如说:Table A有A1,A2,A3,A4,A5这5列,我能不能根据参数对比来select这张表里面的数据,就是select x1,x2...from A的时候想x1,x2...作为参数和A1,A2,A3,A4,A5比对,比对成功就选择这一列,不成功就不选择这一列
如何实现
能不能给个简短的例子呢?刚接触不是很了解
追答declare
l_dept pls_integer := 20;
l_nam varchar2(20);
l_loc varchar2(20);
begin
execute immediate 'select dname, loc from dept where deptno = :1'
into l_nam, l_loc
using l_dept ;
end;
我最终的结果是数据,列名只是传参,这如何实现呢?
追答这个要你循环控制了
declare curcor cu is SELECT t.COLUMN_NAME FROM user_tab_columns t where t.TABLE_NAME='TABLE_NAME';
sqlstr varchar2(100):='select ';
for c in cu
loop
if c.column_name in (x,y......)
then
sqlstr :=sqlstr||' '||c.column||','
end if;
end loop;
以上是伪代码了,大概就是这么个逻辑,你自己再改改
先谢谢了,虽然我能看懂这样的逻辑,但我对存储过程不是很熟
追答你去查查存储过程的语法吧,得自己试试,不也不知道你的情况,就算写了也不一定能用
追问en
本回答被提问者采纳