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

转载于:https://www.cnblogs.com/BobXie85/p/9829910.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值