隨筆-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
          主站蜘蛛池模板: 靖边县| 湘西| 阳朔县| 吴堡县| 麻栗坡县| 鹤山市| 台山市| 英超| 南安市| 扎囊县| 泰州市| 中方县| 津市市| 德令哈市| 宝鸡市| 临汾市| 凉城县| 浦江县| 沾化县| 瑞金市| 濉溪县| 东至县| 翁牛特旗| 赣榆县| 南平市| 和平区| 榆林市| 甘洛县| 高密市| 扎兰屯市| 青海省| 普定县| 盱眙县| 天峻县| 台前县| 交城县| 威海市| 伊通| 辉南县| 新干县| 马龙县|