oracle 使用sql developer时仅显示用户在运行时的输入,而不显示整个代码

qmb5sa22  于 2023-02-15  发布在  Oracle
关注(0)|答案(2)|浏览(101)

这是一个例子,我知道这个职位太:
How to get input from user at runtime
当我用pl/sql在sql developer中运行这段代码时:

DECLARE
  a NUMBER;
BEGIN
  a:=&a;
  DBMS_OUTPUT.PUT_LINE(a);
end;

我得到了一个输入用户输入值的提示,并且在脚本输出中看到了输入值。
好吧,这个工作。
但是我看到了整个代码和我的输入值。
一个解决方案,正是这个例子,没有sqlplus,提示符或接受,而不是这个职位:
Provide a message prompt for user input in SQL Developer 3.1.07
有没有可能停用整个代码输出,只看到我的输入值,有没有sql开发人员设置?
我正在使用:
Oracle SQL开发人员

  • 版本21.4.1.349
  • 构建版本349.1822
  • 在Windows 10专业版上

Oracle数据库

  • 21c快速版本(21.0.0.0.0)
krcsximq

krcsximq1#

在SQL Developer中管理输出面板:

开启|关闭验证

VERIFY设置控制SQL*Plus是否显示包含替代变量的每一行的前后图像。

SET VER[IFY] {OFF | ON}

开启|完全关闭反馈

FEEDBACK设置控制SQL*Plus是否显示返回的记录数。您可以设置一个阈值,低于该阈值时,无论是否启用该设置,都不会收到任何反馈。

SET FEED[BACK] {OFF | ON | row_threshold}

部分链接:
set feedback off
SET FEEDBACK
SET VERIFY

a14dhokn

a14dhokn2#

替代变量(如&a)完全是SQLPlus的概念。SQL Developer知道如何使用它的唯一原因是SQL Developer支持大多数SQLPlus脚本语言。因此,您的“无sqlplus”要求(在您的问题中)是毫无意义的。任何解决方案都必须在某种程度上是SQLPlus解决方案。
您的要求非常简单。SQL
Plus支持一个名为verify的功能,它所做的正是您不希望它做的事情:向您显示代码的前后版本。默认情况下,它是on-您所需要做的就是在运行代码之前关闭它。
另一件事是在输出中只显示你的值。默认情况下serveroutput特性是关闭的;要查看dbms_output.put_line()的输出,您必须打开它。不清楚您是否已经这样做了。
因此,在运行代码之前,必须运行这两个SQLPlus命令;第一个是您所询问的命令,第二个是查看put_line()的输出。注意,这两个命令都是SQLPlus命令;它们以分号结尾(尽管如果它们以分号结尾,SQL Developer不会抛出错误)。

set verify off
set serveroutput on

顺便说一句,SQL*Plus允许一些语法错误,因此您的代码将按编写的那样运行(除非它被其他代码包围);但从技术上讲,您在代码末尾的一行上缺少一个正斜杠,它用来指示PL/SQL块的结束。
在编辑器窗口中:

set verify off
set serveroutput on

DECLARE
  a NUMBER;
BEGIN
  a:=&a;
  DBMS_OUTPUT.PUT_LINE(a);
end;
/

弹出窗口要求a的值;我输入值5,然后单击“OK”按钮
脚本输出(下部窗格):

5

PL/SQL procedure successfully completed.

如果您的下一个问题是“如何使PL/SQL procedure successfully completed不出现在输出窗口中”-答案是类似的:

set feedback off

(also SQL*Plus命令,SQL Developer可以理解,并且以分号结尾)。

相关问题