Oracle儲存過程例項

2021-07-31 05:43:47 字數 3550 閱讀 8837

簡單地講,oracle儲存過程就是儲存在oracle資料庫中的乙個程式。

一.概述

oracle儲存過程開發的要點是:

◆使用notepad文字編輯器,用oraclepl/sql程式語言寫乙個儲存過程;

◆在oracle資料庫中建立乙個儲存過程;

◆在oracle資料庫中使用sql*plus工具執行儲存過程;

◆在oracle資料庫中修改儲存過程;

◆通過編譯錯誤除錯儲存過程;

◆刪除儲存過程;

二.環境配置

包括以下內容:

◆乙個文字編輯器notepad;

◆oraclesql*plus工具,提交oraclesql和pl/sql語句到oracledatabase。

◆oracle10gexpress資料庫,它是免費使用的版本;

需要的技巧:

◆sql基礎知識,包括插入、修改、刪除等

◆使用oraclessql*plus工具的基本技巧;

◆使用oraclespl/sql程式語言的基本技巧;

三.寫乙個儲存過程

儲存過程使用oraclespl/sql程式語言編寫,讓我們寫乙個什麼工作都不做的儲存過程,我們可以編譯和執行它而不用擔心會對資料庫產生任何損害。

在notepad,寫下:

create or replace procedure skeleton

is begin 

null; 

end;

把檔案存為skeleton.sql.

讓我們一行行遍歷這個儲存過程:

1create or replace procedure skeleton

2is 

3begin 

4null; 

5end;

行1:create  or  replace  procedure是乙個sql語句通知oracle資料庫去建立乙個叫做skeleton儲存過程,如果存在就覆蓋它;

行2:行3:

行4:nullpl/sql語句表明什麼事都不做,這句不能刪去,因為pl/sql體中至少需要有一句;

行5:四.建立乙個儲存過程

sql語句create  or  replacepr  ocedure在oracle資料庫中建立、編譯和儲存乙個儲存過程。

從window開啟sql*plus並且從sql*plus登入到你的資料庫;開啟skeleton.sql檔案.

在sql>命令提示符下輸入以下命令:

sql>@skeleton 

sql>/

sql*plus裝載skeleton.sql檔案的內容到sql*plus緩衝區並且執行sql*plus語句;sql*plus會通知你儲存過程已經被成功地建立。

現在你的儲存過程被建立,編譯和儲存在你的oracle資料庫,我們可以執行它。

五.執行乙個儲存過程

從sql*plus命令列提示符執行你的儲存過程使用execute命令,如下:

sql>execute  skeleton;

sql*plus輸出一下資訊確信儲存過程成功執行:pl/sql procedure successfully completed.

你也可以在乙個無名pl/sql塊內執行你的儲存過程,在sql*plus命令提示符下,它看起來像:

sql>begin 

2skeleton; 

3end; 

4/

現在我們已經執行了我們的儲存過程,我們如何修改它呢?

六.修改乙個儲存過程

讓我們寫乙個輸出字串「helloworld!」的儲存過程,用notepad開啟你的skeleton.sql檔案,.用dbms_output.put_line過程呼叫去替換null語句,如下所示:

create or replace procedure skeleton

is begin 

dbms_output.put_line(helloworld!); 

end;

儲存到檔案skeleton.sql.

從sql*plus命令列,開啟檔案skeleton.sql.

sql>@skeleton

sql> 

1create or replace procedure skeleton 

2is 

3begin 

4dbms_output.put_line(helloworld!); 

5*end; 

sql>/

sql*plus通知你儲存過程成功建立並輸出提示資訊:procedurecreated.

sql>

用execute命令執行你的儲存過程:

sql>executeskeleton;

sql*plus顯示儲存過程執行成功:pl/sqlprocedure successfully completed.

我們想要的輸出字串"helloworld!"沒有出來,在顯示乙個dbms_output.put_line結果前需要執行乙個set命令,在sql*plus命令列提示符,鍵入:

sql>setserveroutputon

再次執行你的儲存過程:

sql>execute skeleton;

現在結果輸出了:helloworld!

pl/sqlproceduresuccessfullycompleted.

七.除錯乙個儲存過程

當除錯乙個儲存過程時,遵循一樣的步驟,修改sql檔案,建立儲存過程,執行儲存過程,根據編譯器反饋的出錯資訊進行修改,這一步是非常繁瑣的,需要依靠經驗。

在實際的商用儲存過程的開發除錯過程中,由於涉及很多表、型別、游標、迴圈、條件等複雜的邏輯,和pl/sql語句的靈活運用,編譯時會產生很多錯誤提示資訊,程式設計師在根據這些錯誤資訊定位,進行修正,再編譯最後得到正確的結構;

八.放棄乙個儲存過程

如果在資料庫中你不在需要乙個儲存過程你可以刪除它,sql語句dropprocedure完成從資料庫中刪除乙個儲存過程,dropprocedure在sql中被歸類為資料定義語言(ddl)類操作,其他的例子有create,alter,rename和truncate。.

在sql*plus命令提示符下,使用dropproceduresql語句刪除你的叫做skeleton的儲存過程:

sql>drop procedure skeleton;

sql*plusassuresustheprocedurehasbeenremoved:

proceduredropped.

總結

本文詳細討論了如何使用oracle工具開發oracle商用儲存過程的步驟。最後在儲存過程的使用中可能是程式直接呼叫,也可能被觸發器呼叫。

Oracle儲存過程例項

1.建立儲存過程 異常處理 create or replace procedure pro test2 dmlb in varchar2,dmz in varchar2,dmsm1 in varchar2,dmsm2 in varchar2,dmsm3 in varchar2,dmsm4 in va...

Oracle儲存過程例項

不帶任何引數儲存過程 create or replace procedure out date is begin dbms output.put line sysdate end out date 測試 sql set serveroutput on sql exec out date 帶in和ou...

Oracle儲存過程例項

1.基本結構 create or replace procedure 儲存過程名字 引數1 in number,引數2 in number is 變數1 integer 0 變數2 date begin 54com.cn end 儲存過程名字 2.select into statement 將sel...