動態(tài)sql語句傳參數(shù) 如何在oracle存儲過程中執(zhí)行動態(tài)sql語句?
如何在oracle存儲過程中執(zhí)行動態(tài)sql語句?例如,如果表名是動態(tài)的,或者字段是動態(tài)的,或者查詢命令是動態(tài)的,您可以使用以下方法:set serveroutput onclaren numbersq
如何在oracle存儲過程中執(zhí)行動態(tài)sql語句?
例如,如果表名是動態(tài)的,或者字段是動態(tài)的,或者查詢命令是動態(tài)的,您可以使用以下方法:
set serveroutput onclaren numbersql_uustmtvarchar2(50)
t varchar2(20)beginexecute immediate “alter session set nls_uu2;date format=”“yyymmdd”“””
t:=“t_2; ”“| sysdate
sqlustmt:=“選擇計(jì)數(shù)(*)從”| | t
執(zhí)行立即sql | stmt到n
dbms |輸出.put行(“the number of rows of ”“t”“t”“n”)end
如果動態(tài)SQL語句非常長且復(fù)雜,可以使用包裝器。
創(chuàng)建或替換包測試“pkgISTYPE cur”“typ is REF CURSOR
過程測試”proc(v_u2;table VARCHAR2,t_2;cur OUT cur_2;typ)END/
創(chuàng)建或替換包體測試2; pkgISPROCEDURE test_2;proc(v_2;table VARCHAR2,t_2;cur OUT cur_2;typ)ISsqlstr VARCHAR2(2000)BEGINsqlstr:=“SELECT*FROM”| | v_2; table
打開t_curfor sqlstrand/
批量導(dǎo)入、導(dǎo)出和刪除表名以中某些字符開頭的表Oracle
spool C:a.sql
oracle存儲過程中如何執(zhí)行動態(tài)SQL語句,詳細(xì)?
有時(shí)需要在Oracle存儲過程中執(zhí)行動態(tài)sql語句。例如,如果表名是動態(tài)的,字段是動態(tài)的,查詢命令是動態(tài)的,可以使用以下方法:rsetserver outputdeclarennumbersqlustmtvarchar2(50)
tvarchar2(20)beginexecuteimmediate“altersessionsetnlsuuuDateuFormat=”“yyyyymmdd”“””
t:=“tu124; sysdate
sqluStmt:=”selectcount(*)from“| t
executemediatesqluStmtinton
dbmsu輸出.put行(“行數(shù)”“是”||||||||||||||||||||||||_pkgISTYPEcuruTypesRefCursor
PROCEDUREtestuProc(vuTableVarchar2,tuCuroutCuruTyp)END/
CREATEORREPLACEPACKAGEBODYtestuPKGISTypeProcedureTestuProc(vuTableVarchar2,tuCuroutCuruTyp)ISsqlstrVARCHAR2(2000)BEGINsqlstr:=“選擇*自”| | vuTable
OPENtuCurForSqlStrandEnd/
批量導(dǎo)入、導(dǎo)出和刪除表他們的名字在甲骨文中以一些字符開頭