【實驗】【PROCEDURE】一個最簡單的oracle儲存過程"proc_helloworld"
本文透過一個最簡單的oracle儲存過程"proc_helloworld"的實驗,展現一下儲存過程的開發和維護過程,適合超超超級初學小牛(like me)。
1.編寫。編寫一個最最簡單的儲存過程,給它起個名字叫做proc_helloworld
CREATE OR REPLACE PROCEDURE proc_helloworld
IS
BEGIN
DBMS_OUTPUT.put_line ('Hello World!');
END;
/
2.建立。在sqlplus命令列介面建立該儲存過程
sys@ora10g> conn sec/sec
Connected.
sec@ora10g> CREATE OR REPLACE PROCEDURE proc_helloworld
2 IS
3 BEGIN
4 DBMS_OUTPUT.put_line ('Hello World!');
5 END;
6 /
Procedure created.
3.執行。兩種方法執行儲存過程
1).需要在螢幕上顯示出"DBMS_OUTPUT.put_line"的輸出字串,需要做一個小小的設定
sec@ora10g> show serveroutput
serveroutput OFF
sec@ora10g> set serveroutput on
sec@ora10g> show serveroutput
serveroutput ON SIZE 10000 FORMAT WORD_WRAPPED
2).在sqlplus命令列介面使用"EXECUTE"命令(簡寫做"EXEC")執行
sec@ora10g> exec proc_helloworld
Hello World!
PL/SQL procedure successfully completed.
3).在一個無名PL/SQL塊內執行儲存過程
BEGIN
proc_helloworld;
END;
/
sec@ora10g> BEGIN
2 proc_helloworld;
3 END;
4 /
Hello World!
PL/SQL procedure successfully completed.
4.修改。修改一個儲存過程只需要將修改好的儲存過程在sqlplus介面先重新執行一下即可,因為在建立過程中使用的是"CREATE OR REPLACE PROCEDURE",也就是說如果沒有就建立,如果已經存在了這個儲存過程,就替換它
CREATE OR REPLACE PROCEDURE proc_helloworld
IS
BEGIN
DBMS_OUTPUT.put_line ('Hello World! '||chr(10)||'I am a Happy DBA Secooler!');
END;
/
或者
CREATE OR REPLACE PROCEDURE proc_helloworld
IS
BEGIN
DBMS_OUTPUT.put_line ('Hello World!
I am a Happy DBA Secooler!');
END;
/
sec@ora10g> CREATE OR REPLACE PROCEDURE proc_helloworld
2 IS
3 BEGIN
4 DBMS_OUTPUT.put_line ('Hello World! '||chr(10)||'I am a Happy DBA Secooler!');
5 END;
6 /
Procedure created.
看一下執行效果:
sec@ora10g> exec proc_helloworld;
Hello World!
I am a Happy DBA Secooler!
PL/SQL procedure successfully completed.
5.除錯。對於非常複雜的儲存過程的除錯是真正體現個人魅力和能力的地方,往往需要很多的經驗,這個急不得,只能慢慢來 Take it easy.
在sqlplus下除錯儲存過程時,如果出現錯誤,時刻使用"show errors"命令檢視哪裡出錯了,例如:
sec@ora10g> CREATE OR REPLACE PROCEDURE proc_helloworld
2 IS
3 BEGIN
4 DBMS_OUTPUT.put_line ('Hello World!');
5 END
6 /
Warning: Procedure created with compilation errors.
sec@ora10g> show errors
Errors for PROCEDURE PROC_HELLOWORLD:
LINE/COL ERROR
-------- -----------------------------------------------------------------
5/3 PLS-00103: Encountered the symbol "end-of-file" when expecting
one of the following:
;
delete exists prior
The symbol ";" was substituted for "end-of-file" to continue.
透過提示,問題出現在END後面沒有分號結束符號,修改後問題得到處理
sec@ora10g> CREATE OR REPLACE PROCEDURE proc_helloworld
2 IS
3 BEGIN
4 DBMS_OUTPUT.put_line ('Hello World!');
5 END;
6 /
Procedure created.
6.刪除。使用drop語句刪除儲存過程
sec@ora10g> select object_name,object_type,status from user_objects where OBJECT_TYPE='PROCEDURE';
OBJECT_NAME OBJECT_TYPE STATUS
------------------------------ ------------------- -------
PROC_HELLOWORLD PROCEDURE VALID
sec@ora10g> DROP PROCEDURE proc_helloworld;
Procedure dropped.
sec@ora10g> select object_name,object_type,status from user_objects where OBJECT_TYPE='PROCEDURE';
no rows selected
7.獲取。在維護儲存過程的過程中往往需要快速的獲取儲存過程的SQL建立語句,我經常使用的有如下兩種方法
1).使用DBMS_METADATA包獲得
sec@ora10g> SELECT DBMS_METADATA.get_ddl ('PROCEDURE', 'PROC_HELLOWORLD') from dual;
DBMS_METADATA.GET_DDL('PROCEDURE','PROC_HELLOWORLD')
--------------------------------------------------------------------------------
CREATE OR REPLACE PROCEDURE "SEC"."PROC_HELLOWORLD"
IS
BEGIN
DBMS_OUTPUT.put_line ('Hello World!');
END;
2).使用"USER_SOURCE"檢視獲得,本人推薦使用這種方法檢視,格式標準,內容也全面
sec@ora10g> SELECT text FROM user_source WHERE NAME = 'PROC_HELLOWORLD';
TEXT
------------------------------------------------------------------------------------------------------------------------------
PROCEDURE proc_helloworld
IS
BEGIN
DBMS_OUTPUT.put_line ('Hello World!');
END;
8.小結
上面的實驗,我透過編寫、建立、執行、修改、除錯、刪除和獲取七個內容描述了一個儲存過程的開發和維護過程。
試驗,實驗還有實踐,技術工作者永遠不變的途徑!
Goodluck Friends!
-- The End --
1.編寫。編寫一個最最簡單的儲存過程,給它起個名字叫做proc_helloworld
CREATE OR REPLACE PROCEDURE proc_helloworld
IS
BEGIN
DBMS_OUTPUT.put_line ('Hello World!');
END;
/
2.建立。在sqlplus命令列介面建立該儲存過程
sys@ora10g> conn sec/sec
Connected.
sec@ora10g> CREATE OR REPLACE PROCEDURE proc_helloworld
2 IS
3 BEGIN
4 DBMS_OUTPUT.put_line ('Hello World!');
5 END;
6 /
Procedure created.
3.執行。兩種方法執行儲存過程
1).需要在螢幕上顯示出"DBMS_OUTPUT.put_line"的輸出字串,需要做一個小小的設定
sec@ora10g> show serveroutput
serveroutput OFF
sec@ora10g> set serveroutput on
sec@ora10g> show serveroutput
serveroutput ON SIZE 10000 FORMAT WORD_WRAPPED
2).在sqlplus命令列介面使用"EXECUTE"命令(簡寫做"EXEC")執行
sec@ora10g> exec proc_helloworld
Hello World!
PL/SQL procedure successfully completed.
3).在一個無名PL/SQL塊內執行儲存過程
BEGIN
proc_helloworld;
END;
/
sec@ora10g> BEGIN
2 proc_helloworld;
3 END;
4 /
Hello World!
PL/SQL procedure successfully completed.
4.修改。修改一個儲存過程只需要將修改好的儲存過程在sqlplus介面先重新執行一下即可,因為在建立過程中使用的是"CREATE OR REPLACE PROCEDURE",也就是說如果沒有就建立,如果已經存在了這個儲存過程,就替換它
CREATE OR REPLACE PROCEDURE proc_helloworld
IS
BEGIN
DBMS_OUTPUT.put_line ('Hello World! '||chr(10)||'I am a Happy DBA Secooler!');
END;
/
或者
CREATE OR REPLACE PROCEDURE proc_helloworld
IS
BEGIN
DBMS_OUTPUT.put_line ('Hello World!
I am a Happy DBA Secooler!');
END;
/
sec@ora10g> CREATE OR REPLACE PROCEDURE proc_helloworld
2 IS
3 BEGIN
4 DBMS_OUTPUT.put_line ('Hello World! '||chr(10)||'I am a Happy DBA Secooler!');
5 END;
6 /
Procedure created.
看一下執行效果:
sec@ora10g> exec proc_helloworld;
Hello World!
I am a Happy DBA Secooler!
PL/SQL procedure successfully completed.
5.除錯。對於非常複雜的儲存過程的除錯是真正體現個人魅力和能力的地方,往往需要很多的經驗,這個急不得,只能慢慢來 Take it easy.
在sqlplus下除錯儲存過程時,如果出現錯誤,時刻使用"show errors"命令檢視哪裡出錯了,例如:
sec@ora10g> CREATE OR REPLACE PROCEDURE proc_helloworld
2 IS
3 BEGIN
4 DBMS_OUTPUT.put_line ('Hello World!');
5 END
6 /
Warning: Procedure created with compilation errors.
sec@ora10g> show errors
Errors for PROCEDURE PROC_HELLOWORLD:
LINE/COL ERROR
-------- -----------------------------------------------------------------
5/3 PLS-00103: Encountered the symbol "end-of-file" when expecting
one of the following:
;
delete exists prior
The symbol ";" was substituted for "end-of-file" to continue.
透過提示,問題出現在END後面沒有分號結束符號,修改後問題得到處理
sec@ora10g> CREATE OR REPLACE PROCEDURE proc_helloworld
2 IS
3 BEGIN
4 DBMS_OUTPUT.put_line ('Hello World!');
5 END;
6 /
Procedure created.
6.刪除。使用drop語句刪除儲存過程
sec@ora10g> select object_name,object_type,status from user_objects where OBJECT_TYPE='PROCEDURE';
OBJECT_NAME OBJECT_TYPE STATUS
------------------------------ ------------------- -------
PROC_HELLOWORLD PROCEDURE VALID
sec@ora10g> DROP PROCEDURE proc_helloworld;
Procedure dropped.
sec@ora10g> select object_name,object_type,status from user_objects where OBJECT_TYPE='PROCEDURE';
no rows selected
7.獲取。在維護儲存過程的過程中往往需要快速的獲取儲存過程的SQL建立語句,我經常使用的有如下兩種方法
1).使用DBMS_METADATA包獲得
sec@ora10g> SELECT DBMS_METADATA.get_ddl ('PROCEDURE', 'PROC_HELLOWORLD') from dual;
DBMS_METADATA.GET_DDL('PROCEDURE','PROC_HELLOWORLD')
--------------------------------------------------------------------------------
CREATE OR REPLACE PROCEDURE "SEC"."PROC_HELLOWORLD"
IS
BEGIN
DBMS_OUTPUT.put_line ('Hello World!');
END;
2).使用"USER_SOURCE"檢視獲得,本人推薦使用這種方法檢視,格式標準,內容也全面
sec@ora10g> SELECT text FROM user_source WHERE NAME = 'PROC_HELLOWORLD';
TEXT
------------------------------------------------------------------------------------------------------------------------------
PROCEDURE proc_helloworld
IS
BEGIN
DBMS_OUTPUT.put_line ('Hello World!');
END;
8.小結
上面的實驗,我透過編寫、建立、執行、修改、除錯、刪除和獲取七個內容描述了一個儲存過程的開發和維護過程。
試驗,實驗還有實踐,技術工作者永遠不變的途徑!
Goodluck Friends!
-- The End --
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/519536/viewspace-571504/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- mysql 儲存過程 procedure 批次建表MySql儲存過程
- mysql儲存過程procedure、函式function的用法MySql儲存過程函式Function
- mysql檢視儲存過程show procedure status;MySql儲存過程
- Oracle儲存過程乾貨(一):儲存過程基礎Oracle儲存過程
- MySQL入門--儲存過程(PROCEDURE)和儲存函式(FUNCTION)MySql儲存過程儲存函式Function
- oracle的儲存過程Oracle儲存過程
- Oracle儲存過程Oracle儲存過程
- ibatis呼叫oracle儲存過程(極簡版)BATOracle儲存過程
- SQL 儲存過程裡呼叫另一個儲存過程SQL儲存過程
- Oracle儲存過程-1Oracle儲存過程
- ORACLE PL/SQL 物件、表資料對比功能儲存過程簡單實現OracleSQL物件儲存過程
- Sqlsugar呼叫Oracle的儲存過程SqlSugarOracle儲存過程
- 原創:oracle 儲存過程Oracle儲存過程
- laravel建立一個儲存過程Laravel儲存過程
- mssql 儲存過程呼叫另一個儲存過程中的結果的方法分享SQL儲存過程
- MYSQL學習與實驗(八)——儲存過程實驗MySql儲存過程
- LightDB/PostgreSQL 相容Oracle儲存過程SQLOracle儲存過程
- oracle儲存過程書寫格式Oracle儲存過程
- 簡單的mysql儲存過程,輸出結果集MySql儲存過程
- Oracle儲存過程中定義多個遊標Oracle儲存過程
- 使用TensorFlow 來實現一個簡單的驗證碼識別過程
- Oracle 儲存過程分頁 + Sqlsugar呼叫Oracle儲存過程SqlSugar
- oracle儲存過程和觸發器Oracle儲存過程觸發器
- 頭歌資料庫實驗六:儲存過程資料庫儲存過程
- Springboot呼叫Oracle儲存過程的幾種方式Spring BootOracle儲存過程
- PetaPoco在.net專案中的簡單使用(儲存過程篇)儲存過程
- 使用JavaScript和Python實現Oracle資料庫的儲存過程?JavaScriptPythonOracle資料庫儲存過程
- Oracle儲存過程編譯卡死的解決方法Oracle儲存過程編譯
- Oracle儲存過程中跳出迴圈的寫法Oracle儲存過程
- .NET Core中使用Dapper操作Oracle儲存過程最佳實踐APPOracle儲存過程
- vertica 如何實現儲存過程?儲存過程
- Oracle 編譯儲存過程卡死解決方法Oracle編譯儲存過程
- MySQL入門系列:儲存程式(三)之儲存過程簡介MySql儲存過程
- TortoiseGit HTTPS方式儲存密碼最簡單的方法GitHTTP密碼
- mysql返回一個結果集的儲存過程小例子MySql儲存過程
- 儲存過程與儲存函式儲存過程儲存函式
- unidac儲存過程儲存過程
- firedac儲存過程儲存過程
- 呼叫儲存過程儲存過程