oracle 将表名动态传递给游标的最佳方法[已关闭]

vlurs2pr  于 2023-06-29  发布在  Oracle
关注(0)|答案(1)|浏览(162)

已关闭,此问题需要details or clarity。目前不接受答复。
**想改善这个问题吗?**通过editing this post添加详细信息并澄清问题。

昨天关门了。
Improve this question
我有一个要求,收集所有的表名有一个特定的列,并获得分区年龄超过6个月的所有表。目前,我有一个使用动态SQL的过程来获取具有特定列名的表列表和前一列表中每个表的分区名称列表
还有其他方法吗?尝试使用游标和学习表名不能从一个游标传递到另一个像变量,我不知道如何使用引用游标可以做到这一点

nwo49xxi

nwo49xxi1#

当然,您现在使用的SQL不需要动态SQL-其中没有动态内容,因此使用普通游标即可。
对于问题的另一部分,是的--你不能把表名传递给另一个“查询”,除非它是动态SQL或者--另一个选择--使用引用游标。
我在XE上,所以这里没有分区;这只是你可能需要的一个例子。
这段代码搜索包含deptno列的所有表,并返回每个表中的行数。

SQL> declare
  2    l_str varchar2(200);
  3    l_cnt number;
  4    rc    sys_refcursor;
  5  begin
  6    for cur_r in (select table_name
  7                  from user_tab_columns
  8                  where column_name = 'DEPTNO'
  9                 )
 10    loop
 11      open rc for 'select count(*) from ' ||cur_r.table_name;
 12      fetch rc into l_cnt;
 13      dbms_output.put_line('Number of rows in ' || cur_r.table_name || ': ' || l_cnt);
 14      close rc;
 15    end loop;
 16  end;
 17  /
Number of rows in DEPT: 4
Number of rows in EMP: 14
Number of rows in T_EMP: 8

PL/SQL procedure successfully completed.

SQL>

相关问题