这是一个例子,我知道这个职位太:
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)
2条答案
按热度按时间krcsximq1#
在SQL Developer中管理输出面板:
开启|关闭验证
VERIFY设置控制SQL*Plus是否显示包含替代变量的每一行的前后图像。
开启|完全关闭反馈
FEEDBACK设置控制SQL*Plus是否显示返回的记录数。您可以设置一个阈值,低于该阈值时,无论是否启用该设置,都不会收到任何反馈。
部分链接:
set feedback off
SET FEEDBACK
SET VERIFY
a14dhokn2#
替代变量(如
&a
)完全是SQLPlus的概念。SQL Developer知道如何使用它的唯一原因是SQL Developer支持大多数SQLPlus脚本语言。因此,您的“无sqlplus”要求(在您的问题中)是毫无意义的。任何解决方案都必须在某种程度上是SQLPlus解决方案。您的要求非常简单。SQLPlus支持一个名为
verify
的功能,它所做的正是您不希望它做的事情:向您显示代码的前后版本。默认情况下,它是on
-您所需要做的就是在运行代码之前关闭它。另一件事是在输出中只显示你的值。默认情况下
serveroutput
特性是关闭的;要查看dbms_output.put_line()
的输出,您必须打开它。不清楚您是否已经这样做了。因此,在运行代码之前,必须运行这两个SQLPlus命令;第一个是您所询问的命令,第二个是查看
put_line()
的输出。注意,这两个命令都是SQLPlus命令;它们不以分号结尾(尽管如果它们以分号结尾,SQL Developer不会抛出错误)。顺便说一句,SQL*Plus允许一些语法错误,因此您的代码将按编写的那样运行(除非它被其他代码包围);但从技术上讲,您在代码末尾的一行上缺少一个正斜杠,它用来指示PL/SQL块的结束。
在编辑器窗口中:
弹出窗口要求
a
的值;我输入值5,然后单击“OK”按钮脚本输出(下部窗格):
如果您的下一个问题是“如何使
PL/SQL procedure successfully completed
不出现在输出窗口中”-答案是类似的:(also SQL*Plus命令,SQL Developer可以理解,并且不以分号结尾)。