日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

SQL记录-PLSQL异常

發布時間:2024/9/5 数据库 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SQL记录-PLSQL异常 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

PL/SQL異常

程序執行過程中出現錯誤情況被稱為在PL/SQL異常。 PL/SQL支持程序員在程序中使用異常塊捕獲這樣的條件并采取適當的動作應對錯誤情況。有兩種類型的異常:

  • 系統定義的異常

  • 用戶定義的異常

異常處理語法

一般異常處理的語法如下。在這里可以列出下來很多,要處理異常。默認的異常將使用WHEN others THEN處理:

DECLARE<declarations section> BEGIN <executable command(s)> EXCEPTION <exception handling goes here > WHEN exception1 THEN exception1-handling-statements WHEN exception2 THEN exception2-handling-statements WHEN exception3 THEN exception3-handling-statements ........ WHEN others THEN exception3-handling-statements END;

示例

寫一些簡單的代碼來說明這個概念。將使用我們已經創建,并在前面的章節中使用的CUSTOMERS表:

DECLAREc_id customers.id%type := 8; c_name customers.name%type; c_addr customers.address%type; BEGIN SELECT name, address INTO c_name, c_addr FROM customers WHERE id = c_id; DBMS_OUTPUT.PUT_LINE ('Name: '|| c_name); DBMS_OUTPUT.PUT_LINE ('Address: ' || c_addr); EXCEPTION WHEN no_data_found THEN dbms_output.put_line('No such customer!'); WHEN others THEN dbms_output.put_line('Error!'); END; /

當上述代碼在SQL提示符執行時,它產生了以下結果:

No such customer!PL/SQL procedure successfully completed.?

上述程序顯示一個客戶的ID給出的名字和地址。由于在我們的數據庫沒有ID值為8的客戶,該程序運行時引發一個異常NO_DATA_FOUND,這是捕獲異常EXCEPTION塊。

引發異常

異常是數據庫服務器自動在內部數據庫錯誤,但異常可以明確地提出由程序員使用命令RAISE。以下是引發異常的簡單的語法:

DECLAREexception_name EXCEPTION; BEGIN IF condition THEN RAISE exception_name; END IF; EXCEPTION WHEN exception_name THEN statement; END;

可以在引發Oracle的標準異常或任何用戶定義的異常使用上述語法。下一節會顯示如何引發用戶定義異常,引發Oracle標準異常以及類似的方法的例子。

用戶自定義異常

PL/SQL允許根據程序的需要定義自己的異常。用戶定義的異常必須聲明,然后明確地提出使用一個RAISE語句或程序DBMS_STANDARD.RAISE_APPLICATION_ERROR。

聲明一個異常的語法是:

DECLAREmy-exception EXCEPTION;

示例:

下面的例子說明了這個概念。該程序需要一個客戶ID,當用戶輸入了一個無效的ID,異常invalid_id引發。

DECLAREc_id customers.id%type := &cc_id; c_name customers.name%type; c_addr customers.address%type; -- user defined exception ex_invalid_id EXCEPTION; BEGIN IF c_id <= 0 THEN RAISE ex_invalid_id; ELSE SELECT name, address INTO c_name, c_addr FROM customers WHERE id = c_id; DBMS_OUTPUT.PUT_LINE ('Name: '|| c_name); DBMS_OUTPUT.PUT_LINE ('Address: ' || c_addr); END IF; EXCEPTION WHEN ex_invalid_id THEN dbms_output.put_line('ID must be greater than zero!'); WHEN no_data_found THEN dbms_output.put_line('No such customer!'); WHEN others THEN dbms_output.put_line('Error!'); END; /

當上述代碼在SQL提示符執行時,它產生了以下結果:

Enter value for cc_id: -6 (let's enter a value -6) old 2: c_id customers.id%type := &cc_id; new 2: c_id customers.id%type := -6; ID must be greater than zero!PL/SQL procedure successfully completed.

預定義異常

PL/SQL提供許多預先定義的異常,這是在被執行時的任何數據庫規則由程序引發。例如,預定義異常NO_DATA_FOUND時引發一個SELECT INTO語句返回數據行。下表列出了一些重要的預先定義的異常:

ExceptionOracle ErrorSQLCODE描述
ACCESS_INTO_NULL06530-6530當一個空對象會自動分配一個值引發此異常
CASE_NOT_FOUND06592-6592當沒有任何選擇,在當選擇一個CASE語句的子句,并且沒有ELSE子句時被引發
COLLECTION_IS_NULL06531-6531當程序試圖申請其他收集方法不是存在未初始化的嵌套表或VARRAY,或程序試圖值分配給未初始化的嵌套表或變長數組的元素時被引發
DUP_VAL_ON_INDEX00001-1當重復值試圖被存儲在具有唯一索引的列時被引發
INVALID_CURSOR01001-1001當嘗試以使這是不允許的,如關閉一個未打開的游標的游標操作時被引發
INVALID_NUMBER01722-1722當一個字符的字符串轉換成一個數失敗,因為字符串不表示一個有效的數據被引發
LOGIN_DENIED01017-1017當程序試圖登錄到數據庫使用無效的用戶名或密碼被引發
NO_DATA_FOUND01403+100它被引發當一個SELECT INTO語句無任何行返回
NOT_LOGGED_ON01012-1012在不連接到數據庫發出數據庫調用它被引發
PROGRAM_ERROR06501-6501它被引發當PL/SQL有一個內部問題
ROWTYPE_MISMATCH06504-6504當游標取值有不兼容的數據類型的變量被引發
SELF_IS_NULL30625-30625它被引發,當對象的成員方法被調用,但對象類型的實例沒有被初始化。
STORAGE_ERROR06500-6500它被引發當PL/SQL內存不足或內存已損壞
TOO_MANY_ROWS01422-1422它被引發當SELECT INTO語句返回多行
VALUE_ERROR06502-6502當算術,轉換,截短,或大小約束錯誤時引發
ZERO_DIVIDE014761476它被引發當一個數試圖除以零。

轉載于:https://www.cnblogs.com/xinfang520/p/7722011.html

總結

以上是生活随笔為你收集整理的SQL记录-PLSQL异常的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美在线视频不卡 | 国产欧美一区二区精品久久久 | 人妻少妇一区二区 | 波多在线播放 | 看av网站 | 色妹av| 天天色图片 | 精品h| 91干视频 | 色伊人久久| 国产精品伦一区二区三区 | 日本免费中文字幕 | 日韩3区 | 精品久久久久久中文字幕人妻最新 | 内谢少妇xxxxx8老少交视频 | 国产成人午夜视频 | 精品一区二区久久久久久久网站 | 香蕉免费在线视频 | 国产精品日本 | 91在线一区二区三区 | 黄色一极视频 | 日韩国产毛片 | 亚洲 欧美 日韩 在线 | 美女黄色录像 | 成人免费毛片网站 | 波多野结衣在线网址 | 国产成年人网站 | 天天视频色 | 国产一区二区三区精品在线观看 | 国产日韩欧美日韩大片 | 老司机午夜免费精品视频 | 不卡中文字幕在线观看 | 国产盗摄在线观看 | 在线观看免费黄网站 | 黄色片美女| 精品人妻一区二区三区在线视频 | 久久精品在线观看 | 337p亚洲精品色噜噜狠狠 | 电影91久久久 | 国产主播啪啪 | 国产做爰高潮呻吟视频 | av鲁丝一区鲁丝二区鲁丝 | 麻豆入口 | 韩国日本中文字幕 | 三级全黄做爰在线观看 | 无码人妻丰满熟妇区五十路百度 | 中文字幕人妻一区二区 | 久久无毛| 国产精品网站入口 | av在线手机观看 | 波多野结衣电车 | 婷婷免费| 久久久久久麻豆 | 久久精品一二区 | 精品一区电影 | 日韩美女在线视频 | 亚洲欧美日韩国产一区 | 国产一区视频观看 | 成人免费黄色小视频 | 在线爱情大片免费观看大全 | 91麻豆精品91久久久久同性 | 丝袜美腿av在线 | 久久国产精品久久精品国产 | 成人动漫在线免费观看 | 久久久电影 | www日| 日韩在线精品 | 国产免费观看久久黄av片 | 91在线一区二区三区 | 婷婷狠狠干 | 国产一线二线在线观看 | 亚洲日本中文字幕在线 | 欧美 日韩 国产 精品 | 视频在线中文字幕 | 激情五月综合色婷婷一区二区 | 中文字幕在线不卡 | 国产丝袜一区二区 | jizz中国少妇 | 波多野结衣在线视频免费观看 | 亚洲成人高清在线 | 上海贵妇尝试黑人洋吊 | 色偷偷伊人 | 都市激情校园春色亚洲 | 影音先锋毛片 | 成人国产一区二区 | 亚洲一区免费视频 | 中日韩在线 | 91精品在线观看视频 | 色姑娘av| 亚洲aaa级 | 亚洲va欧美va天堂v国产综合 | 黄在线免费 | 国产寡妇亲子伦一区二区三区四区 | 亚洲精品成人区在线观看 | 天天射干| 处女朱莉第一次 | 一本综合久久 | 日本丰满少妇一区二区三区 | 久草免费福利视频 |