oracle 存儲過程使用動態sql


Oracle存儲過程使用動態SQL 有兩種寫法:用 DBMS_SQL 或 execute immediate,建議使用后者。

DDL和DML (注意DDL中可以用拼接字符串的方法用來create table或drop table,在DML中,類似於insert則不可以直接用execute immediate中直接拼接的方法,必須用using傳遞參數)

/*** DDL ***/  
create or replace procedure CREATE_TABLE(CREATE_SQL VARCHAR2) is
begin
  EXECUTE IMMEDIATE CREATE_SQL; -- 'create table temp_table(table_name varchar2(50))'
end CREATE_TABLE;


/*** DML ***/  
declare   
   v_1 varchar2(8);   
   v_2 varchar2(10);   
   str varchar2(50);   
begin   
   v_1:='測試';   --這里的v_1,v_2可以是直接存儲過程中傳過來的參數
   v_2:='北京';   
   str := 'INSERT INTO test (name ,address) VALUES (:1, :2)';   
   EXECUTE IMMEDIATE str USING v_1, v_2;   
   commit;   
end; 

轉自:https://www.cnblogs.com/zmlctt/p/3750198.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM