国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

PL/SQL的一些語法

2024-07-21 02:40:14
字體:
來源:轉載
供稿:網友
寫一些關于PL/SQL的語法,免得等到用到的時候還要去亂翻。
1。控制流程(if,while)
2。循環(for)
3。游標(cursor)
4。異常處理(exception)
1。控制流程()


A.條件語句
IF <statement> THEN
   PL/SQL
END IF;

IF <statement> THEN
   PL/SQL
ELSE
   PL/SQL
END IF;

IF <statement> THEN
   PL/SQL
ELSIF <statement> THEN
   PL/SQL
END IF;


2。循環

A.simple loop
LOOP
   SQL
   EXIT WHEN <statement>;
END LOOP;

LOOP
   SQL
   IF <statement> THEN
   EXIT;
   END IF;
END LOOP;

B.While loop
WHILE <statement> LOOP
   SQL
END LOOP;

C.For loop
FOR $counter in $low .. $high LOOP
   SQL
END LOOP


3。游標

在PL/SQL程序中定義的游標叫做顯式游標。

A.顯式游標的處理由四個部分組成:
cursor $cursorname is $Query;   --定義游標
open $cursorname;         --打開游標
fetch $cursorname into $othervariable  --把游標中的東西取出
close $cursorname    --關閉游標

B.游標屬性
%found         布爾型屬性,當最近一次讀紀錄成功時,為true.
%nofound                失敗時,為false.
%isopen
%rowcount      返回已從游標中讀取的記錄數。

C.參數化游標

所有的SQL語句在上下文區內部都是可執行的,因此都有一個游標指向上下文區,此游標就是所謂的SQL游標。
與顯式游標不同,SQL游標不被程序打開和關閉。


4.異常處理概念

異常處理是用來處理正常執行過程中未預料的事件。假如PL/SQL程序塊一旦產生異常而又沒有指出如何處理時,程序會自動終止。
異常處理部分放在PL/SQL的后半部分,結構為:

EXCEPTION
       WHEN first_exception THEN <code to handle first exception>
       WHEN second_exception THEN <code to handle second exception>
       WHEN OTHERS THEN <code to handle second exception>  --OTHERS必須放在最后

異常分為預定義和用戶定義兩種。
用戶定義的異常是通過顯式使用RAISE語句來引發。如

DECLARE
  e_TooManyStudents EXCEPTION;  -- 類型為Exception,用于指示錯誤條件
  v_CurrentStudents NUMBER(3);  -- HIS-101學生注冊當前號
  v_MaxStudents NUMBER(3);      -- HIS-101學生注冊答應的最大號BEGIN
  /* 找出注冊學生當前號和答應的最大號 */  SELECT current_students, max_students    INTO v_CurrentStudents, v_MaxStudents    FROM classes
    WHERE department = 'HIS' AND course = 101;  /* 檢查學生的號 */  IF v_CurrentStudents > v_MaxStudents THEN/* 太多的學生注冊,則觸發例外處理 */  RAISE e_TooManyStudents;  END IF;EXCEPTION  WHEN e_TooManyStudents THEN    /* 當太多的學生注冊,就插入信息解釋發生過錯誤 */    INSERT INTO log_table (info) VALUES ('History 101 has ' v_CurrentStudents       'students: max allowed is ' v_MaxStudents);END;
END;

用戶定義的的異常處理
可以使用RAISE_application_ERROR來創建自己的錯誤處理:
RAISE_APPLICATION_ERROR(error_number,error_message,[keep_errors]);
其中error_number是從-20000到-20999之間的參數;error_message是相應的提示信息,小于512字節。如:
CREATE OR REPLACE PROCEDURE Register (
p_StudentID IN students.id%TYPE,
p_Department IN classes.department%TYPE,
p_Course IN classes.course%TYPE) AS
v_CurrentStudents NUMBER;  -- 班上學生的當前號
v_MaxStudents NUMBER;      -- 班上學生的最大號
BEGIN
/* 找出學生的當前號和最大號 */
SELECT current_students, max_students
 INTO v_CurrentStudents, v_MaxStudents
FROM classes
WHERE course = p_Course
AND department = p_Department;
/* 確認另外的學生是否有足夠的教室*/
IF v_CurrentStudents + 1 > v_MaxStudents THEN
RAISE_APPLICATION_ERROR(-20000, 'Can''t add more students to '
p_Department ' ' p_Course);
END IF;
/* 加一個學生在本班 */
ClassPackage.AddStudent(p_StudentID, p_Department, p_Course);

EXCEPTION
WHEN NO_DATA_FOUND THEN
   RAISE_APPLICATION_ERROR(-20001, p_Department ' ' p_Course
          ' doesn''t exist!');
END Register;

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 海阳市| 灵寿县| 峨眉山市| 资源县| 康马县| 三都| 平果县| 丰原市| 祁东县| 当涂县| 石河子市| 桦甸市| 磐石市| 宝鸡市| 和静县| 玉树县| 历史| 佛冈县| 正阳县| 祁阳县| 香港| 中山市| 禹州市| 扎鲁特旗| 广西| 蒙城县| 资源县| 麻栗坡县| 鄄城县| 乐业县| 昌江| 曲麻莱县| 富平县| 唐海县| 康马县| 大连市| 安泽县| 盐池县| 德州市| 朝阳县| 五河县|