首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PL/SQL -动态访问游标数据

问PL/SQL -动态访问游标数据
EN

Stack Overflow用户
提问于 2018-01-16 23:12:55
回答 1查看 99关注 0票数 0

我使用了两个游标: 1) c_emp游标有表数据。2) c_column_names游标包含表中的列。我想使用c_emp游标动态地从c_column_names游标中获取所有列的数据。

我尝试使用以下代码,但它不起作用:

代码语言:javascript
复制
create or replace procedure sp_read_data(in_tb_nm varchar2) as
cursor c_emp is select * from test_table;
begin    
    open c_column_names for select column_name from all_tab_columns where table_name = 'TEST_TABLE';      
    for emp_row in c_emp
    loop    
      loop
          fetch c_column_names into lc_record;
          exit when c_column_names %notfound;                
          lc_col_nm := 'emp_row.'||lc_record;
          v_dtl := v_dtl || rpad (lc_col_nm, 20, ' ');
      end loop;     
    end loop;      
end sp_read_data;

有没有动态访问游标数据的方法?

EN

回答 1

Stack Overflow用户

发布于 2018-01-17 04:48:11

我觉得你是在重新发明轮子。为什么不使用引用游标呢?

代码语言:javascript
复制
SQL> create or replace function sp_read_data (in_tb_nm in varchar2)
  2    return sys_refcursor
  3  is
  4    cur_r sys_refcursor;
  5  begin
  6    open cur_r for 'select * from ' || in_tb_nm;
  7    return cur_r;
  8  end;
  9  /

Function created.

SQL> select sp_read_data('departments') from dual;
CURSOR STATEMENT : 1

CURSOR STATEMENT : 1
           10 Administration                        200        1700
           20 Marketing                             201        1800
           30 Purchasing                            114        1700
           40 Human Resources                       203        2400
           50 Shipping                              121        1500
           60 IT                                    103        1400
           <snip>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48284367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档