EXECUTE IMMEDIATE用法小結(jié)建站知識(shí)
導(dǎo)讀:1建站知識(shí)EXECUTE IMMEDIATE 代替了以前Oracle8i中DBMS_SQL package包.網(wǎng)站建設(shè)教程網(wǎng)站seo優(yōu)化。
它解析并馬上執(zhí)行動(dòng)態(tài)的SQL語(yǔ)句或非運(yùn)行時(shí)創(chuàng)建的PL/SQL塊.動(dòng)態(tài)創(chuàng)建和執(zhí)行SQL語(yǔ)句性能超前,EXECUTE IMMEDIATE的目標(biāo)在于減小企業(yè)費(fèi)用并獲得較高的性能,較之以前它相當(dāng)容易編碼.盡管DBMS_SQL仍然可用,但是推薦使用EXECUTE IMMEDIATE,因?yàn)樗@的收益在包之上。 -- 使用技巧 1. EXECUTE IMMEDIATE將不會(huì)提交一個(gè)DML事務(wù)執(zhí)行,應(yīng)該顯式提交 如果通過(guò)EXECUTE IMMEDIATE處理DML命令, 那么在完成以前需要顯式提交或者作為EXECUTE IMMEDIATE自己的一部分. 如果通過(guò)EXECUTE IMMEDIATE處理DDL命令,它提交所有以前改變的數(shù)據(jù) 2. 不支持返回多行的查詢,這種交互將用臨時(shí)表來(lái)存儲(chǔ)記錄(參照例子如下)或者用REF cursors. 3. 當(dāng)執(zhí)行SQL語(yǔ)句時(shí),不要用分號(hào),當(dāng)執(zhí)行PL/SQL塊時(shí),在其尾部用分號(hào). 4. 在Oracle手冊(cè)中,未詳細(xì)覆蓋這些功能。 下面的例子展示了所有用到Execute immediate的可能方面.希望能給你帶來(lái)方便. 5. 對(duì)于Forms開(kāi)發(fā)者,當(dāng)在PL/SQL 8.0.網(wǎng)站建設(shè)教程6.3.版本中,F(xiàn)orms 6i不能使用此功能. EXECUTE IMMEDIATE -- 用法例子 1. 在PL/SQL運(yùn)行DDL語(yǔ)句 begin execute immediate 'set role all'; end; 2. 給動(dòng)態(tài)語(yǔ)句傳值(USING 子句) declare l_depnam varchar2(20) := 'testing'; l_loc varchar2(10) := 'Dubai'; begin execute immediate 'insert into dept values (:1, :2, :3)' using 50, l_depnam, l_loc; commit; end; 3. 從動(dòng)態(tài)語(yǔ)句檢索值(INTO子句) declare l_cnt varchar2(20); begin execute immediate 'select co如何seo優(yōu)化推廣網(wǎng)站unt(1) from emp' into l_cnt; dbms_output.put_line(l_cnt); end; 4. 動(dòng)態(tài)調(diào)用例程.例程中用到的綁定變量參數(shù)必須指定參數(shù)類型. 黓認(rèn)為IN類型,其它類型必須顯式指定 declare l_routin varchar2(100) := 'gen2161.get_rowcnt'; l_tblnam varchar2(20) := 'emp'; l_cnt number; l_status varchar2(200); begin execute immediate 'begin ' || l_routin || '(:2, :3, :4); end;' using in l_tblnam, out l_cnt, in out l_status; if l_status != 'OK' then dbms_output.put_line('error'); end if; end; 5. 將返回值傳遞到PL/SQL記錄類型;同樣也可用%rowtype變量 declare type empdtlrec is record (empno number(4), ename varchar2(20), deptno number(2)); empdtl empdtlrec; begin execute immediate 'select empno, ename, deptno ' || 'from emp where empno = 7934' into empdtl; end; 6. 傳遞并檢索值.INTO子句用在USING子句前 declare l_dept pls_integer := 20; l_nam varchar2(20); l_loc varchar2(20); begin execute immediate 'select dname, loc from dept where deptno = :1' into l_nam, l_loc using l_dept ; end; 7. 多行查詢選項(xiàng).對(duì)此選項(xiàng)用insert語(yǔ)句填充臨時(shí)表, 用臨時(shí)表進(jìn)行進(jìn)一步的處理,也可以用REF cursors糾正此缺憾. declare l個(gè)業(yè)網(wǎng)站建設(shè)公司_sal pls_integer := 2000; begin execute immediate 'insert into temp(empno, ename) ' || ' select empno, ename from emp ' || ' where sal > :1' using l_sal; commit; end; 對(duì)于處理動(dòng)態(tài)語(yǔ)句,EXECUTE IMMEDIATE 比以前可能用到的更容易并且更高效. 當(dāng)意圖執(zhí)行動(dòng)態(tài)語(yǔ)句時(shí),適當(dāng)?shù)靥幚懋惓8又匾?應(yīng)該關(guān)注于捕獲所有可能的異常.相關(guān)網(wǎng)站建設(shè)教程網(wǎng)站seo優(yōu)化。
聲明: 本文由我的SEOUC技術(shù)文章主頁(yè)發(fā)布于:2023-05-22 ,文章EXECUTE IMMEDIATE用法小結(jié)建站知識(shí)主要講述小結(jié),標(biāo)簽,EXECUTE IMMEDIATE用法小結(jié)建站知網(wǎng)站建設(shè)源碼以及服務(wù)器配置搭建相關(guān)技術(shù)文章。轉(zhuǎn)載請(qǐng)保留鏈接: http://www.bifwcx.com/article/web_5053.html
為你推薦與EXECUTE IMMEDIATE用法小結(jié)建站知識(shí)相關(guān)的文章
-
通王TWCMS 2.0.3網(wǎng)站模板程序下載
(126)人喜歡 2024-01-15 -
Windows官方原版在哪里下載
(175)人喜歡 2024-01-15 -
WordPress網(wǎng)站模板發(fā)帖標(biāo)題顏色設(shè)置
(131)人喜歡 2024-01-07 -
修改discuz論壇帖子標(biāo)題80字符的長(zhǎng)度限制
(249)人喜歡 2024-01-07 -
wordpress程序調(diào)用不帶超鏈接的Tag標(biāo)簽
(234)人喜歡 2024-01-05 -
網(wǎng)站在不同時(shí)期需調(diào)整內(nèi)容更新的方向
(112)人喜歡 2023-08-12