在plsql中执行IMMEDIATE
发布时间:2021-01-23 00:53:26 所属栏目:MsSql教程 来源:网络整理
导读:如何从此代码中获取结果 EXECUTE IMMEDIATE 'SELECT * FROM ' || table_name 通过循环 通常的方法看起来像这样 for items in (select * from this_table)loophtp.p(items.id);end loop; 解决方法 如果你真的需要从动态表名中选择*,那么我可能会使用dbms_sql
|
如何从此代码中获取结果 EXECUTE IMMEDIATE 'SELECT * FROM ' || table_name 通过循环 通常的方法看起来像这样 for items in (select * from this_table) loop htp.p(items.id); end loop; 解决方法如果你真的需要从动态表名中选择*,那么我可能会使用dbms_sql输入记录: create type tq84_varchar2_tab as table of varchar2(4000); / 输入结果集(这是一组记录): create type tq84_varchar2_tab_tab as table of tq84_varchar2_tab; / 执行select并返回结果集实例的函数: create or replace function tq84_select_star_from_table(table_name in varchar2)
return tq84_varchar2_tab_tab
as
stmt_txt varchar2(4000);
cur number;
columns_desc dbms_sql.desc_tab;
column_cnt number;
result_set tq84_varchar2_tab_tab;
begin
stmt_txt := 'select * from ' || table_name;
cur := dbms_sql.open_cursor;
dbms_sql.parse(cur,stmt_txt,dbms_sql.native);
dbms_sql.describe_columns(cur,column_cnt,columns_desc);
dbms_sql.close_cursor(cur);
stmt_txt := 'select tq84_varchar2_tab(';
for i in 1 .. column_cnt loop
if i != 1 then
stmt_txt := stmt_txt || ',';
end if;
stmt_txt := stmt_txt || columns_desc(i).col_name;
end loop;
stmt_txt := stmt_txt || ') from ' || table_name;
-- dbms_output.put_line(stmt_txt);
execute immediate stmt_txt
bulk collect into result_set;
return result_set;
end tq84_select_star_from_table;
然后可以使用以下功能: declare
records tq84_varchar2_tab_tab;
begin
records := tq84_select_star_from_table('user_objects');
for i in 1 .. records.count loop
dbms_output.put_line (records(i)(5) || ': ' || records(i)(1));
end loop;
end;
/ (编辑:51站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- sql-server – 使用存储过程作为业务逻辑层
- WinRAR自解压缩的小技巧
- sql – 使用空格和字符将字符串拆分为Oracle中的分隔符和re
- sql-server – 使用LEFT JOIN或NOT EXISTS之间的最佳实践
- 数据库设计 – 在具有缩写表名的表中为每个字段名添加前缀是
- 如何在SQL select语句中动态创建列
- sql-server – 对于SELECT INTO表查询,WHERE 1 = 2有什么意
- SQL Server中怎么样实现数字辅助表?一文带你看懂
- sql-server – IntelliSense无法正常工作但已启用
- sql-server-2005 – 在SQL Server 2005中向存储过程添加参数

