莊周夢蝶

          生活、程序、未來
             :: 首頁 ::  ::  :: 聚合  :: 管理

          PL/SQL學習筆記(四)

          Posted on 2007-02-11 19:57 dennis 閱讀(1067) 評論(0)  編輯  收藏 所屬分類: 數據庫技術

          這部分主要講述在PL/SQL中如何訪問oracle

          (一)檢索單行數據

          在PL/SQL嵌入select語句,使用方法:

          SELECT select_list INTO variable_name1,variable_name2,variable_name3... FROM TABLE WHRE condition

          例:

          ?

          DECLARE
          ??v_sal?
          NUMBER ( 6 , 2 );
          ??v_id?
          NUMBER ;
          BEGIN
          ??v_id:
          = ' &id ' ;
          ??
          SELECT ?salary? into ?v_sal? FROM ?employee
          ??
          WHERE ?id = v_id;

          ??.

          ?

          需要注意事項:

          1.不僅可以使用普通標量接受數據,也可以使用Record接受數據

          2.使用的SELECT語句必須返回一條記錄,并且只能返回一條記錄,否則會觸發PL/SQL異常,或者顯示錯誤信息

          (1)NO_DATA_FOUND異常,當沒有數據返回時拋出此異常

          (2)TOO_MANY_ROWS異常,返回多條數據時拋出此異常

          (3)在WHERE子句中使用變量時必須注意,變量名不能字段名相同,否則會觸發TOO_MANY_ROWS異常

          (二)使用DML語句

          1.在PL/SQL中使用DML語句(insert,update,delete)語句與直接在sqlplus使用沒什么不同,只不過可以使用變量代替具體的值,不再舉例

          2.SQL游標:

          (1)在執行SELECT,INSERT,UPDATE,DELETE語句時,Oracle Server會為這些SQL語句分配相應的Context Area,并且Oracle使用此Context Area解析并執行相應的SQL語句,而游標就是指向Context Area的指針。在oracle中,游標又分為顯式和隱式兩種,其中隱式游標又被成為SQL游標,專門用于處理SELECT INTO,INSERT,DELETE,UPDATE語句。而顯式游標多用于處理多行的SELECT語句。

          (2)SQL游標的四種屬性:

          (A) SQL%ISOPEN

          用于確定SQL游標是否打開。因為oracle在執行SELECT INTO,INSERT,UPDATE,DELETE語句時會隱含著打開游標,并在執行結束后關閉。所以此值對于開發人員來說一直是false,實際開發中不需要此屬性

          (B) SQL%FOUND

          用于確定SQL語句是否執行成功,當SQL語句有作用行時,它為TRUE,否則為FALSE,如:

          DECLARE

          ??v_dept?emp.deptno
          % TYPE;

          BEGIN

          ??
          UPDATE ?emp? SET ?sal = sal * 1.1 ? WHERE ?deptno =& no;

          ??
          if ?SQL % FOUND? then

          ??????dbms_output.put_line(
          ' 語句執行成功 ' );

          ???
          else

          ??????dbms_output.put_line(
          ' 語句執行失敗 ' );

          ???
          end ? if ;

          END ;


          (C)與SQL%FOUND相反的就是SQL%NOTFOUND

          (D)SQL%ROWCOUNT ,用于返回SQL語句作用的行數

          (三)事務控制語句

          在PL/SQL中同樣可以使用COMMIT,ROLLBACK,SAVEPOINT等事務控制語句,與直接使用沒有什么不同。

          主站蜘蛛池模板: 都江堰市| 砚山县| 山阴县| 曲水县| 湘西| 古丈县| 始兴县| 吉安县| 棋牌| 安化县| 环江| 江都市| 剑阁县| 花莲市| 九台市| 彰化市| 文水县| 茌平县| 雅安市| 杭锦后旗| 洛浦县| 沙河市| 凌源市| 西峡县| 安阳县| 炎陵县| 黄石市| 新河县| 邻水| 大足县| 铜鼓县| 翁牛特旗| 阿克苏市| 宣威市| 万载县| 成都市| 无极县| 咸宁市| 红桥区| 平邑县| 玛多县|