Maison >base de données >tutoriel mysql >在SQL PLUS中调试Oracle存储过程

在SQL PLUS中调试Oracle存储过程

WBOY
WBOYoriginal
2016-06-07 17:13:44984parcourir

开发和调试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

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn