【问题标题】:Rudimentary issue: basic PL/SQL console output? [duplicate]基本问题:基本的 PL/SQL 控制台输出? [复制]
【发布时间】:2012-04-26 08:50:39
【问题描述】:

我正在使用 SQL Developer,并希望使用 DBMS_OUTPUT.PUT_LINE() 将变量的内容输出到控制台。我正在运行以下代码,将数字 1 到 5 相加,但我没有看到任何输出。

SET SERVEROUTPUT ON;
DECLARE 
n_counter NUMBER := 5; -- Substitute this variable
n_sum     NUMBER := 0;
BEGIN
  WHILE n_counter != 0
  LOOP
    n_sum := n_sum + n_counter;
    n_counter := n_counter -1;
  END LOOP;
  DBMS_OUTPUT.PUT_LINE(n_sum);
END;

此外,您是否知道比令人难以置信的密集 Oracle PL/SQL 文档更好的故障排除资源? [类似于 Java SE7 API?]

【问题讨论】:

  • 你完成这个例程了吗? IE。不知何故,这不是一个无限循环,对吗?好像没有。
  • 是的,例程成功完成。
  • 可以尝试使用基本循环而不是 while,因为似乎没有问题,因为 ServerOutput 已打开,唯一的原因可能是由于 While 循环

标签: sql oracle plsql oracle-sqldeveloper dbms-output


【解决方案1】:

由于您使用的是 SQL Developer,因此您有几个选择。

在 SQL Developer 中,转到 View | DBMS Output 以确保 DBMS 输出窗口可见。在 DBMS 输出窗口中,选择“加号”图标并选择要将数据写入 DBMS 输出窗口的连接。然后使用右箭头(在 Windows 中为 Ctrl+Enter)在 SQL Worksheet 窗口中运行 PL/SQL 块。您将看到输出出现在 DBMS 输出窗口中。

或者,您可以将 SQL*Plus SET SERVEROUTPUT ON 命令和 PL/SQL 块放在 SQL 工作表中并作为脚本运行(Windows 中的 F5)。这将在“脚本输出”窗口中的“匿名块已完成”消息的正下方显示输出。

注意:Oracle Sql Developer 中的 Dbms 输出不会在输出窗口中显示 null。它移动到一个新行,但在它返回除 null 以外的其他内容之前,您不会知道之前的所有 null 都在那里。

【讨论】:

  • 我正在使用 SQL Developer,并收到以下通知:匿名块已完成。目标是添加值 1-5(包括 1-5)。
  • @TylerJFisher - 更新了我的答案
  • 只有在调试时才有效吗?目前我的调试器不起作用,我仍在尝试通过从 sql 文件调用它来运行 pl/sql
  • @Zeus - dbms_output 与调试器分开。调试器允许您在代码执行时实际单步执行代码。 dbms_output 更加原始,只允许您编写代码来输出信息位。
  • 感谢您的回答。在包中运行函数并让它在 dbms 输出中打印的最佳方法是什么?你也可以看看stackoverflow.com/questions/28222952/…这里的问题
猜你喜欢
  • 1970-01-01
  • 2022-08-20
  • 1970-01-01
  • 1970-01-01
  • 2014-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-23
相关资源
最近更新 更多