我试图一次放多行:
dbms_output.put('1 2 3 4 5 6 7 8 9 '
|| chr(10) ||
'1 2 3 4 5 6 7 8 9 '
|| chr(10) ||
'1 2 3 4 5 6 ');
dbms_output.new_line;
这是我预期的结果:
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6
这就是我得到的:
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3
4 5 6
这里发生了什么?
为什么在最后一行结尾之前有换行符?
有没有办法得到我正在寻找的结果?
只是为了让事情变得更加模糊:
dbms_output.put('1 2 3 4 5 6 7 8 9 '
|| chr (13) || chr(10) ||
'1 2 3 4 5 6 7 8 9 '
|| chr (13) || chr(10) ||
'1 2 3 4 5 6 ');
dbms_output.new_line;
给出这个输出:
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2
3 4 5 6
Oracle版本:
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
PL/SQL Release 11.2.0.4.0 - Production
CORE 11.2.0.4.0 Production
TNS for Linux: Version 11.2.0.4.0 - Production
NLSRTL Version 11.2.0.4.0 - Production
答案 0 :(得分:0)
为什么要烦恼这个问题?只需使用In all the scanning functions, a carriage return followed immediately by a newline is treated as a plain newline (\r\n means the same as \n).
:
dbms_output.put_line()
答案 1 :(得分:0)
DBMS_OUTPUT.PUT_LINE的每行记录限制为32767字节,因为它接受VARCHAR2。
除此之外,它只是将VARCHAR2值存储在数组中。
客户端(例如SQL * Plus)将对DBMS_OUTPUT.GET_LINES进行后续调用,以将这些行复制到客户端的内存中。然后它将(客户端)执行某些操作以在输出中呈现这些行。对于命令行客户端,这可能涉及某些特定于OS的处理换行符(在OS平台之间不一致)。
一旦开始在字节流中粘贴其他非打印控制字符,您将限制代码的可移植性。