Oracle- 預存程序和異常捕捉

來源:互聯網
上載者:User

標籤:

  最近工作有點忙,沒什麼時間在上班時間進修一下,自己晚上有時候去打打球,回家看看電視劇,日子一天天過……。前段時間看到公司有用到ORACLE,而我一直都覺的ORACLE對於我來說是很重的,所以這個周末花了點時間學習一些基礎下。

 

建立無參預存程序

create procedure p_myPro1 isbegin  insert into dept(deptno,dname,loc) values(60,‘ccx‘,‘321321‘);end;

修改無參預存程序

create or replace procedure p_myPro1 isbegin  insert into dept(deptno,dname,loc) values(60,‘ccx‘,‘321321‘); end;

 

建立和修改有參預存程序

create or replace procedure p_myPro2(spName varchar2,newSal number) isbegin    update emp set sal=newSal where ename=spName;end;call p_myPro2(‘SCOTT‘,‘1111‘);

 

查看錯誤資訊
 show error;

調用預存程序
調用預存程序的方式有兩種,call,exec

exec是sqlplus的命令,只能在sqlplus中使用。和 set serveroutput on 一起用。call是sql命令,任何工具都可以使用。

例如:call p_myPro1()

Oracle輸出語句過程

dbms_output是oracle所提供的包(類似java的開發包),該包包含一些過程,put_line就是dbms_output包的一個過程。

Oracle變數的使用例子 

declarev_ename varchar2(5);v_sal number(7,2);begin  select ename,sal into v_ename,v_sal from emp where empno=7369;  dbms_output.put_line(‘姓名‘||v_ename||‘   工資‘||v_sal);end;

Oracle異常捕捉

declarev_ename varchar2(5);v_sal number(7,2);begin  select ename,sal into v_ename,v_sal from emp where empno=1111;  dbms_output.put_line(‘姓名‘||v_ename||‘   工資‘||v_sal);    exception  when no_data_found then    dbms_output.put_line(‘SELECT INTO沒有找到資料‘);  when not_logged_on then    dbms_output.put_line(‘沒有串連到ORACLE‘);  end;

 

錯誤號碼

異常錯誤資訊名稱

說明

ORA-0001

Dup_val_on_index

違反了唯一性限制

ORA-0051

Timeout-on-resource

在等待資源時發生逾時

ORA-0061

Transaction-backed-out

由於發生死結事務被撤消

ORA-1001

Invalid-CURSOR

試圖使用一個無效的遊標

ORA-1012

Not-logged-on

沒有串連到ORACLE

ORA-1017

Login-denied

無效的使用者名稱/口令

ORA-1403

No_data_found

SELECT INTO沒有找到資料

ORA-1422

Too_many_rows

SELECT INTO 返回多行

ORA-1476

Zero-divide

試圖被零除

ORA-1722

Invalid-NUMBER

轉換一個數字失敗

ORA-6500

Storage-error

記憶體不夠引發的內部錯誤

ORA-6501

Program-error

內部錯誤

ORA-6502

Value-error

轉換或截斷錯誤

ORA-6504

Rowtype-mismatch

宿主遊標變數與 PL/SQL變數有不相容行類型

ORA-6511

CURSOR-already-OPEN

試圖開啟一個已處於開啟狀態的遊標

ORA-6530

Access-INTO-null

試圖為null 對象的屬性賦值

ORA-6531

Collection-is-null

試圖將Exists 以外的集合( collection)方法應用於一個null pl/sql 表上或varray上

ORA-6532

Subscript-outside-limit

對嵌套或varray索引得引用超出聲明範圍以外

ORA-6533

Subscript-beyond-count

對嵌套或varray 索引得引用大於集合中元素的個數.

    

對這種異常情況的處理,只需在PL/SQL塊的異常處理部分,直接引用相應的異常情況名,並對其完成相應的異常錯誤處理即可。

Oracle- 預存程序和異常捕捉

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.