如何在同一行显示两次DBMS_OUTPUT输出?PL/SQL代码疑问
解决PL/SQL中DBMS_OUTPUT同一行输出的问题
你遇到的问题根源在于Dbms_Output.Put_line函数——它每次执行都会自动在输出内容末尾添加换行符,所以每次调用都会另起一行显示。要实现同一行输出,你需要改用Dbms_Output.Put函数,这个函数只输出指定内容,不会自动换行,当你需要换行时再手动调用Dbms_Output.New_line。
修改后的代码如下:
DECLARE temp1 NUMBER := digit; BEGIN IF (digit <= 0) THEN Dbms_Output.Put_line( digit ||'! = ' || factorial); ELSE Dbms_Output.Put_line( digit ||'! = fact(' || digit||') = '); END IF; WHILE (temp1 > 0) LOOP Dbms_Output.Put(temp1); -- 用Put代替Put_line,不自动换行 IF (temp1 != 1) THEN Dbms_Output.Put(' * '); -- 同样用Put输出连接符,保持同一行 ELSE Dbms_Output.Put(' '); -- 最后一个数后输出空格,可按需调整 END IF; temp1 := temp1 - 1; END LOOP; Dbms_Output.New_line; -- 循环结束后手动换行,避免后续内容连在一起 END; /
关键修改说明:
- 将第11行、13行、14行的
Put_line替换为Put,让数字和连接符都输出在同一行。 - 循环结束后调用
New_line,确保后续输出(如果有)从新行开始。 - 若希望最后一个数字后直接换行,可把
Dbms_Output.Put(' ');替换为Dbms_Output.New_line;,这样循环到最后一个数时就完成换行。
内容的提问来源于stack exchange,提问作者Pratham Garg
相关产品推荐
相关产品推荐

