oracle 儲存過程菜鳥級知識

2021-08-30 11:58:52 字數 3272 閱讀 8791

一. 概述

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

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商用儲存過程的步驟。最後在儲存過程的使用中可能是程式直接呼叫,也可能被觸發器呼叫。

儲存過程菜鳥例子

這是在pubs庫中建立乙個名稱為computeplus的儲存過程,該儲存過程的作用是,將兩個float型別變數進行相加後,從第三個變數輸出。有筆誤。應該是 use pubs go create procedure computeplus firstvariable float,secondvaria...

oracle 儲存過程基礎知識2

說明 在公升級過程中,sqlserver 利用儲存在 syscomments 中的加密注釋來重新建立加密過程。for replication 指定不能在訂閱伺服器上執行為複製建立的儲存過程。使用 for replication 選項建立的儲存過程可用作儲存過程篩選,且只能在複製過程中執行。本選項不能...

oracle 儲存過程基礎知識3

引用物件 sql server 允許建立的儲存過程引用尚不存在的物件。在建立時,只進行語法檢查。執行時,如果快取記憶體中尚無有效的計畫,則編譯儲存過程以生成執行計畫。只有在編譯過 程中才解析儲存過程中引用的所有物件。因此,如果語法正確的儲存過程引用了不存在的物件,則仍可以成功建立,但在執行時將失敗,...