oracle存储过程中如何执行动态SQL语句,详细?
有时需要在oracle存储过程中执行动态SQL语句,例如表名是动态的,或字段是动态的, 或查询命令是动态的,可用下面的方法: setserveroutputondeclarennumber;sql_stmtvarchar2(50); tvarchar2(20);beginexecuteimmediatealtersessionsetnls_date_format=YYYYMMDD; t:=t_||sysdate; sql_stmt:=selectcount(*)from||t; executeimmediatesql_stmtinton; dbms_output.put_line(Thenumberofrowsof||t||is||n);end; 如果动态SQL语句很长很复杂,则可用包装. CREATEORREPLACEPACKAGEtest_pkgISTYPEcur_typISREFCURSOR; PROCEDUREtest_proc(v_tableVARCHAR2,t_curOUTcur_typ);END;/ CREATEORREPLACEPACKAGEBODYtest_pkgISPROCEDUREtest_proc(v_tableVARCHAR2,t_curOUTcur_typ)ISsqlstrVARCHAR2(2000);BEGINsqlstr:=SELECT*FROM||v_table; OPENt_curFORsqlstr;END;END;/ 在oracle中批量导入,导出和删除表名以某些字符开头的表 spoolc:\a.sql