sqlplus查oracle存储过程,在SQL PLUS中调试Oracle存储过程
我們在通常情況下,開發和調試Oracle存儲過程都是用可視化工具,如PL SQL DEVELOPER,TOAD等等。不會有人傻到要用 vim 去開發,再用 sql plus 去調試的存儲過程的。但在有些情況下,我們知道在 sql plus 中如何調試存儲過程,還是有收益的。
像我的有些客戶的數據庫環境,我只能通過ssh 連接進去看。開發人員告訴我,一個存儲過程使用pl sql developer 調試一下就死掉,再調再死。
我在數據庫的系統管理視圖中看不到任何錯誤,怎么辦呢?
沒辦法,只能自己使用sql plus 這個工具去調試存儲過程啦!
在繞過幾層網絡設置,連接上數據庫服務器操作系統,打開sqlplus 工具窗口。
要調試的存儲過程是這樣子:
CREATE OR REPLACE PROCEDURE "PROC_OBJECT_GET_ID"(p_id_name varchar2,
result??? out integer,
p_message out varchar2)
一個輸入變量和兩個輸出變量,分別為varchar,integer,varchar 類型。
在sql plus 中,使用var 聲明變量,使用exec? 賦值和執行存儲過程
SQL> VAR P_ID_NAME VARCHAR2(100)
SQL> VAR RESULT NUMBER
SQL> VAR P_MESSAGE VARCHAR2(100)
SQL> EXEC :P_ID_NAME:= 'com.css.cms.document'
SQL> execute PROC_OBJECT_GET_ID1(:P_ID_NAME,:result,:p_message);
PL/SQL? 過程已成功完成。
SQL> PRINT RESULT
RESULT
----------
-1
SQL> PRINT P_MESSAGE
P_MESSAGE
--------------------------------------------------------------------------------
ORA-01422:? 實際返回的行數超出請求的行數
變量的類型只有幫助中列出來的這些。
SQL>? variable result integer;
用法 : VAR[IABLE] [ [ NUMBER | CHAR | CHAR (n [CHAR|BYTE]) |
VARCHAR2 (n [CHAR|BYTE]) | NCHAR | NCHAR (n) |
NVARCHAR2 (n) | CLOB | NCLOB | REFCURSOR |
BINARY_FLOAT | BINARY_DOUBLE ] ]
sqlplus 工具還有一些功能,可以使用help 方式去學習。
總結
以上是生活随笔為你收集整理的sqlplus查oracle存储过程,在SQL PLUS中调试Oracle存储过程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle delete原理,如何恢复
- 下一篇: oracle数据库渐变色,CSS3背景颜