问问题描述
答精选答案

有时需要在oracle存储过程中执行动态SQL语句,例如表名是动态的,或字段是动态的,
r或查询命令是动态的,可用下面的方法:
rsetserveroutputondeclarennumber;sql_stmtvarchar2(50);
rtvarchar2(20);beginexecuteimmediate'altersessionsetnls_date_format=''YYYYMMDD''';
rt:='t_'||sysdate;
rsql_stmt:='selectcount(*)from'||t;
rexecuteimmediatesql_stmtinton;
rdbms_output.put_line('Thenumberofrowsof'||t||'is'||n);end;
r如果动态SQL语句很长很复杂,则可用包装.
rCREATEORREPLACEPACKAGEtest_pkgISTYPEcur_typISREFCURSOR;
rPROCEDUREtest_proc(v_tableVARCHAR2,t_curOUTcur_typ);END;/
rCREATEORREPLACEPACKAGEBODYtest_pkgISPROCEDUREtest_proc(v_tableVARCHAR2,t_curOUTcur_typ)ISsqlstrVARCHAR2(2000);BEGINsqlstr:='SELECT*FROM'||v_table;
rOPENt_curFORsqlstr;END;END;/
r在oracle中批量导入,导出和删除表名以某些字符开头的表
rspoolc:
a.sql
本文来自作者[蓬蒿狂客]投稿,不代表公众科技网立场,如若转载,请注明出处:https://www.cpst.net.cn/changshijingxuan/202609/1536365.html
评论列表(4条)
我是公众科技网的签约作者“蓬蒿狂客”!
希望本篇文章《oracle存储过程中如何执行动态SQL语句,详细》能对你有所帮助!
本站[公众科技网]内容主要涵盖:教育咨询,知识百科
本文概览:有时需要在oracle存储过程中执行动态SQL语句,例如表名是动态的,或字段是动态的,r或查询命令是动态的,可用下面的方法:rsetserveroutputondeclarennumber;sql_stmtvarchar2(50);rtvarchar2(20);beginexecuteimmediate'altersessionsetnls_date_format=''YYYYMMDD''';rt:='t_'||sysdate;rsql_stmt:='selectcount(