EXECUTE IMMEDIATE 一般用于 执行动态 SQL例如:SQL> BEGIN2 EXECUTE IMMEDIATE ( 'SELECT * FROM test_dysql WHERE id=1' );3 END;4 /PL/SQL procedure successfully completed.
在ORACLE的PL/SQL里:EXECUTE IMMEDIATE 代替了以前Oracle8i中DBMS_SQL package包.它解析并马上执行动态的SQL语句或非运行时创建的PL/SQL块.动态创建
不要使用占位符了 改成 EXECUTE IMMEDIATE 'CREATE OR REPLACE SYNONYM ORA_OLAP.' || v_temp.table_name || ' FOR erp_oltp.' || v_temp.table_name; COMMIT;
这是oracle里绑定变量的写法.前面你没复制全,应该是VC_SUM_SQL := select 字 解释如下:EXECUTE IMMEDIATE VC_SUM_SQL --执行VC_SUM_SQL INTO VN_
execute immediate 'update '||rep_table_name||' set recall_flag=''n'' where sno_number=:1 and phone_number:=2 and recall_flag is null' Using row_record.SNO_NUMBER,row_record.PHONE_NUMBER; commit; 应该这样的,以上,希望对你有所帮助!
把多条sql语句封装成以个过程之类的,execute immediate这个直接调用过程
在PL/SQL中在执行SQL语句时可以直接写SQL或者可以把一个SQL语句拼成一个字符串,如下:select * from dual;v_sql:='select * from dual'; EXECUTE IMMEDIATE v_sql
一个简单直观的处理方式:将返回结果写入临时表,如:1.先创建一个临时表:TMPTABLE2.将SQL语法改为:INSERT INTO TMPTABLE SELECT OLUMN1,COLUMN2 FROM TABLENAME1BEGIN EXECUTE IMMEDIATE 'INSERT INTO TMPTABLE SELECT * FROM TABLENMAE1';END;
直接用变量就行了.sqlstr varchar2(200)for i:=0 to 9 loopsqlstr:='select tradedate,creditedCharge into o_date'||to_char(i+1)||', o_moneydate'||to_char(i+1)||' from gdb_b_epptradeinfo b where b.seqno = '||to_char(i);execute immediate sqlstr;end loop;
in 表示输入参数 out 表示输出参数也就是说execute immediate 'begin ' || l_routin || '(:2, :3, :4); end;' using in l_tblnam, out l_cnt, in out l_status;dbms_output.put_line(l_cnt);可以打印出过程执行后的返回结果 l_cnt