如何開發oracle儲存過程

2021-08-24 21:10:40 字數 4092 閱讀 8714

在我的上乙個銀行專案中,我接到編寫oracle儲存過程的任務,我是程式設計師,腦袋裡只有一些如何使用callable介面呼叫儲存過程的經驗,一時不知如何下手,我查閱了一些資料,通過實踐發現編寫oracle儲存過程是非常不容易的工作,即使上路以後,除錯和驗證非常麻煩。儲存過程(stored procedure)是一組為了完成特定功能的sql 語句集,經編譯後儲存在資料庫

sql儲存過程執行起來比sql命令文字快得多。當乙個sql語句包含在儲存過程中時,伺服器不必每次執行它時都要分析和編譯它。

呼叫儲存過程,可以認為是乙個三層結構。這使你的程式易於維護。如果程式需要做某些改動,你只要改動儲存過程即可

你可以在儲存過程中利用transact-sql的強大功能。乙個sql儲存過程可以包含多個sql語句。你可以使用變數和條件。這意味著你可以用儲存過程建立非常複雜的查詢,以非常複雜的方式更新資料庫。

最後,這也許是最重要的,在儲存過程中可以使用引數。你可以傳送和返回引數。你還可以得到乙個返回值(從sql return語句)。

優點: 1.利於實施,可以現場修改,2.減小網路負擔。

缺點: 1.移植性差,2.語言支援功能有限,3多層下,介面一變動,工作量比較大。

一. 概述

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

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

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

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

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

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

• 刪除儲存過程;

二.環境配置

包括以下內容:

• 乙個文字編輯器notepad;

• oracle sql*plus工具,提交oracle sql和pl/sql 語句到oracle database。

• oracle 10g express資料庫,它是免費使用的版本;

需要的技巧:

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

• 使用oracle's sql*plus工具的基本技巧;

• 使用oracle's pl/sql 程式語言的基本技巧;

三.寫乙個儲存過程

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

在notepad, 寫下:

create or replace procedure skeleton

isbegin

null;

end;

把檔案存為skeleton.sql.

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

1 create or replace procedure skeleton

2 is

3 begin

4 null;

5 end;

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

行2:行3:

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

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

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

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

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

sql>@skeleton (此處如果不在工作目錄,則需要寫出絕對路徑如@c:/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

2 skeleton;

3 end;

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

六.修改乙個儲存過程

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

create or replace procedure skeleton

isbegin

dbms_output.put_line('hello world!');

end;

儲存到檔案skeleton.sql.

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

sql> @skeleton

sql>

1 create or replace procedure skeleton

2 is

3 begin

4 dbms_output.put_line('hello world!');

5* end;

sql> /

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

sql>

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

sql> execute skeleton;

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

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

sql> set serveroutput on

再次執行你的儲存過程:

sql> execute skeleton;

現在結果輸出了:hello world!

pl/sql procedure successfully completed.

七.除錯乙個儲存過程

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

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

八.放棄乙個儲存過程

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

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

sql> drop procedure skeleton;

sql*plus assures us the procedure has been removed:

procedure dropped.

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

有時候檢視可能也可以實現儲存過程的一些功能,因為檢視也是sql語句,儲存過程實現的功能更多,更複雜,能接受引數

如何開發ORACLE儲存過程

在我的上乙個銀行專案中,我接到編寫oracle儲存過程的任務,我是程式設計師,腦袋裡只有一些如何使用callable介面呼叫儲存過程的經驗,一時不知如何下手,我查閱了一些資料,通過實踐發現編寫oracle儲存過程是非常不容易的工作,即使上路以後,除錯和驗證非常麻煩。簡單地講,oracle儲存過程就是...

如何開發ORACLE儲存過程

一.概述 oracle儲存過程開發的要點是 使用notepad文字編輯器,用oracle pl sql程式語言寫乙個儲存過程 在oracle資料庫中建立乙個儲存過程 在oracle資料庫中使用sql plus工具執行儲存過程 在oracle資料庫中修改儲存過程 通過編譯錯誤除錯儲存過程 刪除儲存過程...

如何開發Oracle儲存過程

第 1 頁 如何開發oracle儲存過程 一。概述 oracle儲存過程開發的要點是 1 使用notepad文字編輯器,用oraclepl sql程式語言寫乙個儲存過程 2 在oracle資料庫中建立乙個儲存過程 3 在oracle資料庫中使用sql plus工具執行儲存過程 4 在oracle資料...