oracle 包 簡單使用

2021-10-01 18:35:51 字數 2574 閱讀 7650

包(package)的主要作用是用於邏輯組合相關的pl/sql型別

比如記錄型別或者集合型別,pl/sql游標或游標宣告以及pl/sql子程式

還可以包含任何可以在塊的宣告區中定義的變數

或者說是

將功能或業務相似的儲存過程,函式

以及型別等進行乙個封裝

乙個pl/sql包由如下兩部分組成

語法

create or replace package 包名

is --宣告變數

--宣告常量

--型別的定義

--游標的定義

--宣告儲存過程

procedure 儲存過程名[(引數 in|out|in out 型別,..)];

--宣告函式

function 函式名[(引數 型別,...)] return 返回值型別;

end[包名];

建立乙個包規範

create or replace package pk1

is --宣告乙個變數

s varchar2(50);

--宣告乙個常量

t constant varchar2(10):='tab_';

--定義乙個集合型別

type ity is table of varchar2(30);

--宣告乙個儲存過程

procedure p1;

--宣告函式

function fn(n number) return number;

end pk1;

語法

create or replace package body 包名

is --宣告私有物件

--宣告私有變數

--宣告私有常量

--私有函式或儲存過程

--公有物件的實現

end[包名];

注意:

包名,和包宣告的名字一樣

私有物件只能在包體內部呼叫,在最前面宣告

建立乙個包體

create or replace package body pk1

is --宣告變數

ss varchar(50);

--乘法表

procedure p1

isbegin

for i in 1..9 loop

for j in 1..i loop

dbms_output.put(i||'*'||j||'='||i*j);

end loop;

dbms_output.put_line('');

end loop;

end;

--階乘

function fn(n number) return number

is--宣告乙個變數儲存階乘

s number(10) :=1;

begin

for i in 1..n loop

s:=i*s;

end loop;

return s;

end;

end;

呼叫1

begin

pk1.s:=3;

dbms_output.put_line(pk1.s);

end;

輸出1

3
呼叫2

begin

pk1.ss:=3;

dbms_output.put_line(pk1.ss);

end;

輸出2

ora-06550: 第 2 行, 第 7 列: 

pls-00302: 必須宣告 'ss' 元件

變數ss在包體中宣告,外部程式不能訪問

呼叫3

begin

pk1.p1();

end;

輸出3

1*1=1

2*1=22*2=4

3*1=33*2=63*3=9

4*1=44*2=84*3=124*4=16

5*1=55*2=105*3=155*4=205*5=25

6*1=66*2=126*3=186*4=246*5=306*6=36

7*1=77*2=147*3=217*4=287*5=357*6=427*7=49

8*1=88*2=168*3=248*4=328*5=408*6=488*7=568*8=64

9*1=99*2=189*3=279*4=369*5=459*6=549*7=639*8=729*9=81

呼叫&&輸出4

sql> select pk1.fn(4) from dual;

pk1.fn(4)

----------

24

Oracle包的使用

包 例子 建立乙個計算器包 包的定義 像抽象類,只有定義 create or replace package cal as function addfun num1 number,num2 number return number function subfun num1 number,num2 n...

golang io ioutil包簡單使用

package main import fmt io ioutil strings func main 讀取整個檔案資料 data,ioutil.readfile 1.rtf fmt.println string data 建立檔案,存在清空檔案 ioutil.writefile 1.txt byt...

Swift 閉包簡單使用

playground noun a place where people can play import uikit var str hello,playground 閉包 closures 閉包 是自包含的 塊,可以在 中被傳遞和使用 閉包可以捕獲和儲存其所在上下文中任意常量和變數的引用,這就是所...