顾美玲勾引管家|日韩黄色成人|国产精品theporn动漫|欧美日日日|国产精品探花在线

專業只做數據庫實訓和認證的品牌機構

微信公眾號新浪微博
免費咨詢電話:400-0909-964
當前位置: 網站首頁 > DBA實戰 > DBA課程 > Oracle培訓:PL/SQL中動態執行SQL語句

Oracle培訓:PL/SQL中動態執行SQL語句

文章來源: 更新時間:2016/7/20 15:39:11

在線老師點擊咨詢:

最新學訊:近期OCP認證正在報名中,因考試人員較多請盡快報名獲取最近考試時間,報名費用請聯系在線老師,甲骨文官方認證,報名從速!

我要咨詢

Oracle培訓:PL/SQL中動態執行SQL語句,在PL/SQL程序開發中,可以使用DML語句和事務控制語句,但是還有很多語句(比如DDL語句)不能直接在PL/SQL中執行。這些語句可以使用動態SQL來實現。

PL/SQL塊先編譯然后再執行,動態SQL語句在編譯時不能確定,只有在程序執行時把SQL語句作為字符串的形式由動態SQL命令來執行。在編譯階段SQL語句作為字符串存在,程序不會對字符串中的內容進行編譯,在運行階段再對字符串中的SQL語句進行編譯和執行,動態SQL的語法是:

語法格式:動態SQL

EXECUTE IMMEDIATE 動態語句字符串

[INTO 變量列表]

[USING 參數列表]

語法解析:

如果動態語句是SELECT語句,可以把查詢的結果保存到INTO后面的變量中。如果動態語句中存在參數,USING為語句中的參數傳值。

動態SQL中的參數格式是:[:參數名],參數在運行時需要使用USING傳值。

案例9:動態SQL

代碼演示:動態SQL

DECLARE

   sql_stmt    VARCHAR2(200);  --動態SQL語句

   emp_id      NUMBER(4) := 7566;

   salary      NUMBER(7,2);

   dept_id     NUMBER(2) := 90;

   dept_name   VARCHAR2(14) := 'PERSONNEL';

   location    VARCHAR2(13) := 'DALLAS';

   emp_rec     emp%ROWTYPE;

BEGIN

   --無子句的execute immediate

   EXECUTE IMMEDIATE 'CREATE TABLE bonus1 (id NUMBER, amt NUMBER)'; 

   ----using子句的execute immediate

   sql_stmt := 'INSERT INTO dept VALUES (:1, :2, :3)'; 

   EXECUTE IMMEDIATE sql_stmt USING dept_id, dept_name, location; 

   ----into子句的execute immediate

   sql_stmt := 'SELECT * FROM emp WHERE empno = :id';

   EXECUTE IMMEDIATE sql_stmt INTO emp_rec USING emp_id; 

 

   ----returning into子句的execute immediate

   sql_stmt := 'UPDATE emp SET sal = 2000 WHERE empno = :1

      RETURNING sal INTO :2';

   EXECUTE IMMEDIATE sql_stmt USING emp_id RETURNING INTO salary; 

 

   EXECUTE IMMEDIATE 'DELETE FROM dept WHERE deptno = :num'

      USING dept_id; 

END;

代碼解析:

① 動態執行一個完整的SQL語句。

② SQL語句中存在3個參數分別標識為:[:1、:2、:3],因此需要用USING關鍵字對三個參數分別賦值。

③ 對動態查詢語句可以使用INTO子句把查詢的結果保存到一個變量中,要求該結果只能是單行。

④ 在Oracle的insert,update,delete語句都可以使用RETURNING子句把操作影響的行中的數據返回,對SQL語句中存在RETURNING子句時,在動態執行時可以使用RETURNING INTO來接收。

⑤ 動態執行參數中可以是:[:數字]也可以是[:字符串]。

本文地址:http://www.mudan321.com/dba/kecheng/12525006173.html 轉載請注明!


PostgreSQL入門到精通 100+ 個學習資料

Oracle培訓機構

金牌講師<>

冉乃綱-老師CUUG金牌講師
冉老師 CUUG金牌講師 Oracle及RedHat高級講師、Unix/Linux 資深專家...[詳細了解老師]

免費咨詢上課流程 客服在線中

陳衛星-老師CUUG金牌講師
陳老師 CUUG金牌講師 精通Oracle管理、備份恢復、性能優化 11年Ora...[詳細了解老師]

免費咨詢上課流程 客服在線中

選學校如何選擇適合自己的學校

CUUG -CHINA UNIX USER GROUP,是國際UNIX組織UNIFORUM的中國代表,是國內悠久的專業UNIX培訓機構,被譽為中國UNIX 的搖籃。多年來,以提高教學質量為本,強調素質教育,積極引進、消化國外的新技術,有效的結合中國....[詳情]

一站式服務(從入學到就業一幫到底)

入學

學習

就業

實操

食宿
地址:北京市海淀區田村山南路35號院17號樓
課程咨詢: 400-0909-964
企業服務:137 1818 8639(陳經理)
部分信息來源于網絡,如有錯誤請聯系指正!
版權所有@北京神腦資訊技術有限公司 (CUUG,中國UNIX用戶協會) Copyright 2016 ALL Rights Reserved 京ICP備11008061號-1