隨筆-7  評論-24  文章-102  trackbacks-0

          一、概述、PL/SQL 塊結構
          二、控制結構(分支、循環、控制)
          三、異常
          四、復合變量(記錄)



          一、概述、PL/SQL 塊結構
          PL/SQL 是Oracle產品對 SQL 語言的擴展。PL/SQL 塊共分為三個部分:聲明部分、可執行部分、異常部分。
          DECLARE
              ...
          BEGIN
              ...
          EXCEPTION
              ...
          END;
          變量聲明內容:賦予變量適當的名稱、數據類型、定義變量(標準,記錄)、控制變量范圍。
          變量命名規則:變量以字符開頭;可包含數字、下劃線、$、#;長度范圍 1~30;不區分大小寫;不能使用系統關鍵字。

          ps.在 PL/SQL 常用的命令:
          1、打開輸出開關            SET SERVEROUTPUT ON ;
          2、利用系統包輸出信息     DBMS_OUTPUT.PUT_LINE('x 的值是:' || x);


          二、控制結構

          1、分支語句
          a、IF 分支
          IF ... THEN
              ...
          ELSEIF ...THEN
              ...
          ELSE
              ...
          END IF;

          b、CASE 分支
          CASE
              WHEN ... THEN
                  ...
              ELSE
                  ...
          END CASE;

          2、循環語句
          a、基本循環(LOOP)

          無條件循環,為避免進入無限循環,LOOP 循環的語句必須使用 EXIT 或 EXIT WHEN 語句。
          LOOP
              ...
          END LOOP;

          b、WHILE 循環
          WHILE condition LOOP
              ...
          END LOOP;

          c、FOR 循環
          FOR counter IN [REVERSE] start..end
          LOOP
              ...
          END LOOP;

          3、順序控制
          GOTO 語句:無條件的將控制權轉到標簽指定的語句。
          NULL 語句:什么也不做,只是將控制權轉到下一條語句,用于語句結構需要,但什么也不需要操作的情況下。
          GOTO xxxx;
                ...
          <<xxxx>>
          NULL;


          三、異常
          系統異常(預定義異常)
          EXCEPTION
              WHEN xxxx THEN
                  ....

          自定義異常
          DECLARE
              -- 自定義異常
              xxxxx EXCEPTION;
          BEGIN
              -- 顯式引發異常
              RAISE xxxxx
          EXCEPTION
              -- 異常處理
              WHEN xxxxx THEN
                  ....
          END; 


          四、復合變量(記錄)
          記錄是由幾個相關值構成的復合變量,常用于支持 SELECT 語句的返回值。使用記錄可以將一行數據并到一個單元進行處理,而不必將每一列單獨處理。
          DECLARE
              TYPE myrecord IS RECORD(id varchar2(10), name varchar2(10));
              real_record myrecord;
          BEGIN
              -- SELECT .. INTO 賦值語句
              SELECT emp_id, emp_name INTO real_record FROM emp WHERE emp_id='001';
              .....
          END;

          或者 可以利用屬性類型來引用變量或者數據庫中某列的數據類型。

            ● 聲明變量 icode,引用表中某列 emp.id 的數據類型
              icode emp.id%TYPE;

            ● 聲明變量 emp_rec 引用表 emp 中所有列記錄類型
              emp_rec emp%ROWTYPE;




          posted on 2008-10-23 22:12 黃小二 閱讀(1794) 評論(0)  編輯  收藏 所屬分類: [DB].Oracle
          主站蜘蛛池模板: 宁阳县| 屏山县| 平昌县| 梨树县| 肃宁县| 丘北县| 和龙市| 双牌县| 时尚| 靖宇县| 麟游县| 平山县| 六安市| 蓬莱市| 金川县| 韶关市| 绥宁县| 兖州市| 洪江市| 晋江市| 新沂市| 大洼县| 邢台县| 尼木县| 邵东县| 嘉善县| 东辽县| 永德县| 富锦市| 新邵县| 泽州县| 丰顺县| 乐亭县| 聊城市| 浪卡子县| 常宁市| 天全县| 中西区| 九江县| 宾阳县| 洛浦县|