脚本不会生成任何输出

时间:2014-01-02 18:05:54

标签: sql oracle plsql

我正在使用Oracle Developer Days图像开始使用SQL Developer中的PL / SQL。

现在我有以下PL / SQL匿名阻止:

DECLARE
  v_country_name VARCHAR2(40);
  v_region_id NUMBER;

BEGIN
  SELECT country_name, region_id
  INTO v_country_name, v_region_id
  FROM countries 
  WHERE country_id = 'CA';

  DBMS_OUTPUT.PUT_LINE('The country name is: ' || v_country_name ||
                        ' and is located in ' || v_region_id || '.');

EXCEPTION
  WHEN TOO_MANY_ROWS THEN
  DBMS_OUTPUT.PUT_LINE('Your SELECT statement retrieved multiple rows. ' ||
                        ' Consider using a cursor.');

END;

这会执行,但它不会按我的意愿执行。脚本输出仅包含“匿名块已完成”。

我尝试使用DBMS_OUTPUT.enable;显式启用输出,但这没有任何区别。

我在俯瞰什么?

1 个答案:

答案 0 :(得分:1)

如果您将其作为脚本运行,则可以在set serveroutput on之前添加declare,这将在“脚本输出”中显示输出。窗口。这将启用会话剩余时间的输出,或直到您再次关闭它。

如果您将其作为语句而不是脚本运行,并且还没有(或者不想要)serveroutput on,则可以将SQL Developer附加到输出。从“视图”菜单中选择“DBMS输出”,这将打开一个具有相同名称的新面板。再次运行代码仍然不会产生任何结果。

单击绿色加号(+)并从列表中选择您的连接。下次运行它时,您将看到输出。第一次它可能会显示多个版本,因为之前的运行会将输出存储在服务器上的缓冲区中,并且它们都将被检索。后续运行将仅显示每次运行生成的新输出。

SQL Developer documentation还有更多内容; PL/SQL packages and types reference中有背景,你可能已经看过了。{3}}。我个人只使用脚本输出,部分原因是它的quicker,部分原因是它将SQL和PL / SQL的混合输出放在一个地方(如果不合适),但主要是习惯和保持与SQL * Plus的脚本兼容性。