oracle 基礎溫習8 包
包的介紹:
一 包的組成:
- 包頭(package):包頭部分申明包內資料型別,常量,變數,遊標,子程式和異常錯誤處理,這些元素為包的公有元素。
- 包主體(package body):包主體則是包定義部分的具體實現,它負責為包頭中所宣告子程式提供具體的實現,在包主體中還可以宣告包的私有元素。
- 包頭和包主體分開編譯,並作為兩個分開的物件分別存放在資料庫字典中。
二 包的語法規則
包頭的語法如下:
create or replace package 包名
As | IS
procedure 過程名();
Function 函式名() return 資料型別;
變數定義;
異常定義;
游標定義;
...........
...........
End 包名;
建立包體的語法:
create or replace Package Body 包名
As | IS
Procedure 過程定義;
Procedure 過程定義;
Function 函式定義;
Function 函式定義;
.........;
end 包名;
下面是student和SC表的定義:
定義一個包,實現如果功能: 輸入學號,分別返回該學生的所在系和相應的選課成績(如果有多門成績,那麼就輸出多門成績)。
下面開始定義包頭:
建立程式包體:
程式包體已建立。
現在,執行這2個過程的時候,我們就會獲取結果:
As | IS
procedure 過程名();
Function 函式名() return 資料型別;
變數定義;
異常定義;
游標定義;
...........
...........
End 包名;
建立包體的語法:
create or replace Package Body 包名
As | IS
Procedure 過程定義;
Procedure 過程定義;
Function 函式定義;
Function 函式定義;
.........;
end 包名;
下面是student和SC表的定義:
-
CREATE TABLE Student
-
(Sno CHAR(9) PRIMARY KEY,
-
Sname CHAR(20) NOT NULL,
-
Ssex CHAR(4),
-
Sage SMALLINT,
-
Sdept CHAR(20)) tablespace starivespace;
-
-
-
CREATE TABLE SC
-
(Sno CHAR(9) NOT NULL,
-
Cno CHAR(6) NOT NULL,
-
Grade SMALLINT,
-
PRIMARY KEY (Sno,Cno),
-
constraint f1 FOREIGN KEY (Sno) REFERENCES Student(Sno),
-
FOREIGN KEY (Cno) REFERENCES Course(Cno)
- ) tablespace starivespace
定義一個包,實現如果功能: 輸入學號,分別返回該學生的所在系和相應的選課成績(如果有多門成績,那麼就輸出多門成績)。
下面開始定義包頭:
-
create or replace
package sdept_or_grade as
procedure print_sdept(psno char);
procedure print_grade(psno char);
end;
/
-
-
- 程式包已建立。
建立程式包體:
-
create or replace
-
package body sdept_or_grade
-
as
-
procedure print_sdept(psno char) as
-
psdept student.sdept%type;
-
begin
-
select sdept into psdept
-
from student
-
where sno=psno;
-
dbms_output.put_line(psdept);
-
exception
-
when no_data_found then
-
dbms_output.put_line(\'Invalid student number\');
-
end;
-
procedure print_grade(psno char) as
-
pgrade SC.grade%type;
-
cursor printgrade is select grade into pgrade
-
from sc
-
where sno=psno;
-
-
begin
-
open printgrade;
-
loop
-
fetch printgrade into pgrade;
-
dbms_output.put_line(pgrade);
-
exit when printgrade%notfound;
-
end loop;
-
close printgrade;
-
exception
-
when no_data_found then
-
dbms_output.put_line(\'Invalid student number\');
-
end;
-
end;
- /
程式包體已建立。
現在,執行這2個過程的時候,我們就會獲取結果:
-
SQL> set serveroutput on;
-
SQL>
-
SQL> execute sdept_or_grade.print_sdept(\'0201\');
-
cs
-
-
PL/SQL 過程已成功完成。
-
-
SQL>
-
SQL> execute sdept_or_grade.print_grade(\'0201\');
-
89
-
64
-
50
-
50
-
- PL/SQL 過程已成功完成。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26435490/viewspace-1078206/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 基礎溫習3Oracle
- oracle 基礎溫習6 格式化Oracle
- Oracle 基礎溫習7 之 遊標Oracle
- oracle 基礎溫習之 儲存過程Oracle儲存過程
- 【重溫基礎】8.字串字串
- 【重溫基礎】19.閉包
- rac基礎知識溫習(1)
- JDK8基礎映象包JDK
- Oracle 基礎溫習1 建立表空間和新使用者Oracle
- javascript之溫習閉包JavaScript
- Oracle 基礎溫習2 查詢預設表空間及其下面的tableOracle
- 【重溫基礎】20.事件事件
- Oracle基礎學習筆記Oracle筆記
- Python基礎入門(8)- Python模組和包Python
- 【重溫基礎】12.使用物件物件
- 【重溫基礎】instanceof運算子
- 【重溫基礎】4.函式函式
- 【重溫基礎】10.陣列陣列
- 【重溫基礎】6.數字
- Oracle之PL/SQL基礎學習OracleSQL
- 【轉載】oc語言基礎知識全面 看完oc基礎教程後再溫習一遍C語言
- Oracle基礎包之DBMS_SHARED_POOL(十)Oracle
- 零基礎學習 Python 之閉包Python
- 【重溫基礎】7.時間物件物件
- 【重溫基礎】17.WebAPI介紹WebAPI
- Redis 基礎資料型別重溫Redis資料型別
- JavaScript基礎8JavaScript
- 大資料基礎學習-8.Hbase-1.2.0大資料
- oracle基礎練習1-4章Oracle
- Oracle學習快速入門基礎教程Oracle
- 【重溫基礎】22.記憶體管理記憶體
- 【重溫基礎】3.迴圈和迭代
- 【重溫基礎】11.Map和Set物件物件
- 【重溫基礎】9.正規表示式
- 【重溫基礎】21.高階函式函式
- 【重溫基礎】15.JS物件介紹JS物件
- 【重溫基礎】14.超程式設計程式設計
- 【重溫基礎】18.相等性判斷