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

 我来答
手机用户46358
2013-08-25 · TA获得超过122个赞
知道答主
回答量:123
采纳率:0%
帮助的人:159万
展开全部
有时需要在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
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式