oracle存储过程中如何执行动态SQL语句
2008-11-21 10:30
1216 查看
有时需要在oracle存储过程中执行动态SQL语句 ,例如表名是动态的,或字段是动态的,或查询命令是动态的,可用下面的方法:
set serveroutput on
declare
n number;
sql_stmt varchar2(50);
t varchar2(20);
begin
execute immediate 'alter session set nls_date_format=''YYYYMMDD''';
t := 't_' || sysdate;
sql_stmt := 'select count(*) from ' || t;
execute immediate sql_stmt into n;
dbms_output.put_line('The number of rows of ' || t || ' is ' || n);
end;
如果动态SQL语句 很长很复杂,则可用包裝.
CREATE OR REPLACE PACKAGE test_pkg
IS
TYPE cur_typ IS REF CURSOR;
PROCEDURE test_proc (v_table VARCHAR2,t_cur OUT cur_typ);
END;
/
CREATE OR REPLACE PACKAGE BODY test_pkg
IS
PROCEDURE test_proc (v_table VARCHAR2,t_cur OUT cur_typ)
IS
sqlstr VARCHAR2(2000);
BEGIN
sqlstr := 'SELECT * FROM '||v_table;
OPEN t_cur FOR sqlstr;
END;
END;
/
在oracle中批量导入,导出和删除表名以某些字符开头的表
spool c:/a.sql
select 'drop table ' || tname || ';' from tab where tname like 'T%';
spool off
@c:/a
set serveroutput on
declare
n number;
sql_stmt varchar2(50);
t varchar2(20);
begin
execute immediate 'alter session set nls_date_format=''YYYYMMDD''';
t := 't_' || sysdate;
sql_stmt := 'select count(*) from ' || t;
execute immediate sql_stmt into n;
dbms_output.put_line('The number of rows of ' || t || ' is ' || n);
end;
如果动态SQL语句 很长很复杂,则可用包裝.
CREATE OR REPLACE PACKAGE test_pkg
IS
TYPE cur_typ IS REF CURSOR;
PROCEDURE test_proc (v_table VARCHAR2,t_cur OUT cur_typ);
END;
/
CREATE OR REPLACE PACKAGE BODY test_pkg
IS
PROCEDURE test_proc (v_table VARCHAR2,t_cur OUT cur_typ)
IS
sqlstr VARCHAR2(2000);
BEGIN
sqlstr := 'SELECT * FROM '||v_table;
OPEN t_cur FOR sqlstr;
END;
END;
/
在oracle中批量导入,导出和删除表名以某些字符开头的表
spool c:/a.sql
select 'drop table ' || tname || ';' from tab where tname like 'T%';
spool off
@c:/a
相关文章推荐
- oracle存储过程中如何执行动态SQL语句
- Oracle中存储过程执行大的Sql语句时如何查看sql是否正确
- mysql存储过程执行动态sql语句并返回值
- 存储过程中执行动态Sql语句
- MySql带参数的存储过程编写(动态执行SQL语句)
- MySql带参数的存储过程编写(动态执行SQL语句)
- Oracle 存储过程中执行动态SQL,动态表名
- mysql存储过程中根据传入参数,动态拼sql语句并且执行
- Oracle 如何根据动态性能视图来查看某条SQL语句的执行计划
- 存储过程中执行动态Sql语句
- 一个存储过程:带参数动态执行sql语句:Execute Immediate
- 存储过程中执行动态Sql语句
- 存储过程中执行动态Sql语句
- oracle存储过程执行动态sql
- MySQL 存储过程中执行动态 SQL 语句
- MySQL 存储过程中执行动态SQL语句的方法
- 用存储过程动态生成sql语句并执行
- Oracle采用存储过程执行sql语句,将查询到的数据导出到EXCEL中
- 在SQL存储过程内拼条件,动态生成SQL语句执行
- 存储过程中执行动态Sql语句