永发信息网

如何在oracle存储过程中执行动态sql语句

答案:2  悬赏:10  手机版
解决时间 2021-01-30 14:24
  • 提问者网友:呐年旧曙光
  • 2021-01-29 20:52
如何在oracle存储过程中执行动态sql语句
最佳答案
  • 五星知识达人网友:思契十里
  • 2021-01-29 22:23
v_sql := ' select / ……‘ ;
execute immediate v_sql ;
全部回答
  • 1楼网友:行雁书
  • 2021-01-29 23:39
有时需要在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
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯