繁体   English   中英

Oracle 过程 select 数据从表传递列从 all_tab_columns [关闭]

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM