> 데이터 베이스 > MySQL 튜토리얼 > 在SQL PLUS中调试Oracle存储过程

在SQL PLUS中调试Oracle存储过程

WBOY
풀어 주다: 2016-06-07 17:13:44
원래의
986명이 탐색했습니다.

开发和调试Oracle存储过程都是用可视化工具,如PL SQL DEVELOPER,TOAD等等。不会有人傻到要用 vim 去开发,再用 sql plus 去调试

我们在通常情况下,开发和调试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 方式去学习。

更多Oracle相关信息见Oracle 专题页面 ?tid=12

linux

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿