oracle存储过程中如何执行动态SQL语句 详细

如题所述

有时需要在oracle 存储过程中执行动态SQL 语句 ,例如表名是动态的,或字段是动态的,或查询命令是动态的,可用下面的方法:set serveroutput ondeclaren number;sql_stmt varchar2(50);t varchar2(20);beginexecute 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_pkgISTYPE cur_typ IS REF CURSOR;PROCEDURE test_proc (v_table VARCHAR2,t_cur OUT cur_typ);END;/CREATE OR REPLACE PACKAGE BODY test_pkgISPROCEDURE test_proc (v_table VARCHAR2,t_cur OUT cur_typ)ISsqlstr VARCHAR2(2000);BEGINsqlstr := 'SELECT * FROM '||v_table;OPEN t_cur FOR sqlstr;END;END;/在oracle 中批量导入,导出和删除表名以某些字符开头的表spool c:\a.sql
温馨提示:答案为网友推荐,仅供参考