1. 程式人生 > >ORACLE package包中的儲存過程的定義和使用

ORACLE package包中的儲存過程的定義和使用

最近的專案中用到了oracle package包中的儲存過程。本文以一個簡單的插入為例,簡述從儲存過程的定義,包括PACKAGE的定義和PACKAGE BODY的定義,到儲存過程的使用。

首先用sql語句建立一個USER_INFO表,sql語句如下:

*****************USER_INFO表建立語句********************

-- Create table

create table USER_INFO

(

id VARCHAR2(4),

username VARCHAR2(15),

password VARCHAR2(15),

address VARCHAR2(30)

);

然後定義儲存過程USER_INSERT,先定義PACKAGE包頭USER_CONTROL,sql語句如下:

******************儲存過程包頭USER_CONTROL*********************************

CREATE OR REPLACE PACKAGE USER_CONTROL AS

PROCEDURE USER_INSERT (

in_id user_info.id%TYPE,

in_username user_info.username%TYPE,

in_password user_info.password%TYPE,

in_address user_info.address%TYPE

);

END USER_CONTROL;

在定義PACKAGE BODY包體USER_CONTROL,這裡包頭和包體的名字要相同,sql語句如下:

****************儲存過程包體***************************

CREATE OR REPLACE PACKAGE BODY USER_CONTROL AS

PROCEDURE USER_INSERT (

in_id user_info.id%TYPE,

in_username user_info.username%TYPE,

in_password user_info.password%TYPE,

in_address user_info.address%TYPE

)IS

BEGIN

INSERT INTO USER_INFO(ID,USERNAME,PASSWORD,ADDRESS) VALUES(in_id,in_username,in_password,in_address);

END;

END USER_CONTROL;

這樣,一個簡單的儲存過程就定義好了。下面就是呼叫這個儲存過程了。

用SQL語句就可以呼叫這個儲存過程。

*******************呼叫儲存過程*****************

DECLARE

BEGIN

USER_CONTROL.USER_INSERT('11','11,'11','11'),

END;

最後在提交這個事務就可以把資料插入到表中了。

當然有的同學會說,你一個插入的功能就寫了這麼多程式碼,我一個insert語句不就搞定了嘛。

我這裡只是給了一個儲存過程從定義到使用的步驟。並沒有在儲存過程中寫太多動作。

其實我們可以簡單的這樣理解,把PACKAGE包頭理解為JAVA中的介面,把PACKAGE BODY理解為JAVA中實現這個介面的類,而裡面的儲存過程就相當於類中的方法了。

希望對大家有幫助吧。