[英]Oracle procedure select data from table passing column from all_tab_columns [closed]
我希望该过程返回表数据,但要从 all_tab_columns 动态传递列。
我想从 my_table 获取 select 数据,但要从 all_tab_columns 传递列
为什么不也传递表名并提高“过程”的可用性? 这是一个选项:创建一个 function ,它接受表名和列列表并返回 refcursor。
SQL> create or replace function f_test (par_tab in varchar2, par_cols in varchar2)
2 return sys_refcursor
3 is
4 l_rc sys_refcursor;
5 l_str varchar2(1000);
6 begin
7 l_str := 'select ' || par_cols || ' from ' ||
8 dbms_assert.sql_object_name(par_tab);
9 open l_rc for l_str;
10 return l_rc;
11 end;
12 /
Function created.
测试:
SQL> select f_test('dept', 'dname, loc') from dual;
F_TEST('DEPT','DNAME
--------------------
CURSOR STATEMENT : 1
CURSOR STATEMENT : 1
DNAME LOC
-------------- -------------
ACCOUNTING NEW YORK
RESEARCH DALLAS
SALES CHICAGO
OPERATIONS BOSTON
Dept 1 NY
Dept 2 London
6 rows selected.
SQL>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.