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