Heim >Datenbank >MySQL-Tutorial >oracle的dbms

oracle的dbms

WBOY
WBOYOriginal
2016-06-07 15:33:241868Durchsuche

oracle的dbms_output的两个小问题 1、如果dbms_output.put_line的内容不能显示,需要在命令行中先敲入set serveroutput on;只要敲一遍就好,之后dbms_output.put_line的内容就能显示出来了; 2、dbms_output.put_line每行只能显示255个字符,超过了就会报错

oracle的dbms_output的两个小问题

 

 

1、如果dbms_output.put_line的内容不能显示,需要在命令行中先敲入set serveroutput on;只要敲一遍就好,之后dbms_output.put_line的内容就能显示出来了;

2、dbms_output.put_line每行只能显示255个字符,超过了就会报错,报错内容如下

      ORA-20000: ORU-10028: line length overflow, limit of 255 chars per line

解决这个问题的方法如下:

oracle的dbms

oracle的dbms declare

oracle的dbms    v_result Varchar2(1000);--这是需要打印出结果的字符串

oracle的dbms    v_pos Number := 1;--用来记录v_result每行开始字符的位置

oracle的dbms

oracle的dbms WHILE v_pos

oracle的dbms            DBMS_OUTPUT.PUT_LINE(SUBSTR(v_result, v_pos, 200));

oracle的dbms            v_pos:= v_pos+ 200;

oracle的dbms       END LOOP;

这样就能打印超过255长度的字符串,超过200长度的自动换行打印出来 oracle的dbms

begin

DBMS_OUTPUT.put( "put======= ");--不换行

DBMS_OUTPUT.put( "put======= ");--不换行

DBMS_OUTPUT.put_line( "putline====== ");--换行

DBMS_OUTPUT.put_line( "putline====== ");--换行

DBMS_OUTPUT.put_line( "putline====== ");--换行

end;

结果:

put=======put=======putline======

putline======

putline======

 

DECLARE
abc   number;
CURSOR   cur   IS   SELECT   1   from   dual;

BEGIN
DBMS_OUTPUT.PUT_LINE( 'cursor   opened ');
open   cur;

LOOP
fetch   cur   into   abc;
DBMS_OUTPUT.PUT_LINE( 'one   data ');
exit   when   cur%notFound;
END   LOOP;
close   cur;
end;

 

要使用DBMS_OUTPUT,必须先
SQL> set serveroutput on

dbms_output.put_line输出的记录太多的话,会出现缓冲区的溢出:
ORA-20000: ORU-10027: buffer overflow, limit of 2000 bytes
ORA-06512: 在"SYS.DBMS_OUTPUT", line 35
ORA-06512: 在"SYS.DBMS_OUTPUT", line 198
ORA-06512: 在"SYS.DBMS_OUTPUT", line 139
ORA-06512: 在line 9

解决方法如下:
(1) 用dbms_output.enable( )设定长度.
DBMS_OUTPUT.ENABLE (buffer_size IN INTEGER DEFAULT 20000);
(注:该方法按如上设置没成功,直接DBMS_OUTPUT.ENABLE (20000);则成功执行)

(2) 也可以SET SERVEROUTPUT ON SIZE 5000

其中(1)方法仅对当次设定有效,删除后仍会提示错误,而(2)方法是修改配置信息,如果不关闭Sql*plus的该设定仍然存在。


在SQL Server中的输出方式是PRINT 函数:

IF EXISTS (SELECT zip FROM authors WHERE zip = '94705')
PRINT 'Berkeley author'

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn