我正在使用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;
显式启用输出,但这没有任何区别。
我在俯瞰什么?
答案 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的脚本兼容性。