Oracle備份恢復:oracle學習之存儲過程語法
create or replace procedure 存(cun)儲過程(cheng)名(param1 in type,param2 out type)
as
變量1 類型(值(zhi)范圍(wei));
變量(liang)2 類型(值范圍(wei));
Begin
Select count(*) into 變量(liang)1 from 表A where列名=param1;
If (判斷條件(jian)) then
Select 列(lie)名(ming) into 變量2 from 表(biao)A where列(lie)名(ming)=param1;
Dbms_output。Put_line(‘打印信(xin)息’);
Elsif (判斷條(tiao)件) then
Dbms_output。Put_line(‘打印信(xin)息’);
Else
Raise 異常名(NO_DATA_FOUND);
End if;
Exception
When others then
Rollback;
End;
注意事項:
1, 存儲過程參數不帶(dai)取值范圍,in表(biao)(biao)示(shi)傳入,out表(biao)(biao)示(shi)輸出(chu)
2, 變量帶取值范圍,后面接分號
3, 在判斷語句前最好先用(yong)count(*)函數(shu)判斷是(shi)否(fou)存(cun)在該條(tiao)操作記錄
4, 用(yong)select 。。。into。。。給變(bian)量賦(fu)值
5, 在代(dai)碼中(zhong)拋異常用 raise+異常名
以命名的異常
命名的(de)系統異常 產生原因
ACCESS_INTO_NULL 未定義對象
CASE_NOT_FOUND CASE 中若未包(bao)含相應的 WHEN ,并且(qie)沒有(you)設置
ELSE 時(shi)
COLLECTION_IS_NULL 集合元素未(wei)初始化
CURSER_ALREADY_OPEN 游(you)標已(yi)經打(da)開
DUP_VAL_ON_INDEX 唯一索引(yin)對應(ying)的列上(shang)有(you)重復的值
INVALID_CURSOR 在(zai)不合法的(de)游標上(shang)進行操作
INVALID_NUMBER 內(nei)嵌的(de) SQL 語句不能將字符轉換為數字
NO_DATA_FOUND 使用 select into 未返回行,或應(ying)用索引(yin)表未初始化的
TOO_MANY_ROWS 執行 select into 時,結果(guo)集超過(guo)一行
ZERO_DIVIDE 除數為(wei) 0
SUBSCRIPT_BEYOND_COUNT 元(yuan)素下標(biao)超(chao)過嵌套表或 VARRAY 的(de)最大值
SUBSCRIPT_OUTSIDE_LIMIT 使用嵌套表或(huo) VARRAY 時,將(jiang)下標指(zhi)定為負數
VALUE_ERROR 賦值時,變(bian)量(liang)長度(du)不足(zu)以容納實(shi)際數據
LOGIN_DENIED PL/SQL 應(ying)用程序連接到(dao) oracle 數據(ju)庫時,提供了不
正(zheng)確的用戶名(ming)或密碼
NOT_LOGGED_ON PL/SQL 應用程序在(zai)沒(mei)有連接 oralce 數據庫的(de)情(qing)況下
訪問數(shu)據
PROGRAM_ERROR PL/SQL 內部問題,可能需要重裝(zhuang)數(shu)據字典& pl./SQL
系(xi)統包
ROWTYPE_MISMATCH 宿主游標(biao)變(bian)量與 PL/SQL 游標(biao)變(bian)量的(de)返(fan)回類型(xing)不兼容
SELF_IS_NULL 使用(yong)(yong)對象類型時,在 null 對象上調(diao)用(yong)(yong)對象方法
STORAGE_ERROR 運(yun)行 PL/SQL 時,超出內存空間
SYS_INVALID_ID 無效的(de) ROWID 字符串(chuan)
TIMEOUT_ON_RESOURCE Oracle 在(zai)等(deng)待資(zi)源時(shi)超時(shi)

您現在的位置: