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中實現這個接口的類,而裏面的存儲過程就相當於類中的方法了。

希望對大家有幫助吧。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章