Select 在替换变量提示之前不会显示输出
Select output won't display before substitution variable prompt
我正在尝试做类似的事情:
SELECT * From stock ;
Define input ;
insert into STOCK values(&input) ;
commit ;
我的问题是 select 的结果不会出现在脚本输出 window 中,直到显示提示弹出窗口以获取用户 input
值之后来自用户。
这个想法是用户可以查看 table 中缺少的条目,然后插入用户想要的值。查看 select 后,系统将提示用户输入,输入所需的值,然后提交。
如何让它在提示前显示查询结果?
我看不到您在 SQL Developer 4.1.3 中描述的内容,除非我删除 define
行,该行无论如何都没有做任何有用的事情。
当 select
紧跟 insert
时,在脚本输出 window 中显示查询输出之前确实会弹出替换提示。所以对于这个脚本,提示首先出现:
SELECT * From stock ;
insert into STOCK values(&input) ;
在它们之间放置除空格之外的任何内容似乎 'fix' 它,甚至是注释行,因此此脚本在提示之前在脚本输出 window 中显示结果:
SELECT * From stock ;
--
insert into STOCK values(&input) ;
您还可以使用 accept
命令:
SELECT * From stock ;
accept input prompt 'New value'
insert into STOCK values(&input) ;
大概这与 SQL 开发人员如何将脚本解析为语句并依次处理每个语句有关。 SQL Developer 的早期版本当然可能会有所不同,因此您可能仍然会在 define
行中看到它 - 尽管它只会在脚本 [=38] 中生成一条消息,如 "SP2-0135: symbol INPUT is UNDEFINED" =],除非定义和插入之间有内容,否则在提示后再次出现。
虽然您所做的事情并没有多大意义,因为它不允许用户决定他们实际上 want/need 不插入任何东西,如果他们看到不止一个缺少值他们必须再次 运行 整个脚本。客户端并不是真正为这样的交互式用户输入而设计的,您最好使用应用程序层来执行此操作 - shell 或命令脚本,或 Apex,或 PHP 等。
我正在尝试做类似的事情:
SELECT * From stock ;
Define input ;
insert into STOCK values(&input) ;
commit ;
我的问题是 select 的结果不会出现在脚本输出 window 中,直到显示提示弹出窗口以获取用户 input
值之后来自用户。
这个想法是用户可以查看 table 中缺少的条目,然后插入用户想要的值。查看 select 后,系统将提示用户输入,输入所需的值,然后提交。
如何让它在提示前显示查询结果?
我看不到您在 SQL Developer 4.1.3 中描述的内容,除非我删除 define
行,该行无论如何都没有做任何有用的事情。
当 select
紧跟 insert
时,在脚本输出 window 中显示查询输出之前确实会弹出替换提示。所以对于这个脚本,提示首先出现:
SELECT * From stock ;
insert into STOCK values(&input) ;
在它们之间放置除空格之外的任何内容似乎 'fix' 它,甚至是注释行,因此此脚本在提示之前在脚本输出 window 中显示结果:
SELECT * From stock ;
--
insert into STOCK values(&input) ;
您还可以使用 accept
命令:
SELECT * From stock ;
accept input prompt 'New value'
insert into STOCK values(&input) ;
大概这与 SQL 开发人员如何将脚本解析为语句并依次处理每个语句有关。 SQL Developer 的早期版本当然可能会有所不同,因此您可能仍然会在 define
行中看到它 - 尽管它只会在脚本 [=38] 中生成一条消息,如 "SP2-0135: symbol INPUT is UNDEFINED" =],除非定义和插入之间有内容,否则在提示后再次出现。
虽然您所做的事情并没有多大意义,因为它不允许用户决定他们实际上 want/need 不插入任何东西,如果他们看到不止一个缺少值他们必须再次 运行 整个脚本。客户端并不是真正为这样的交互式用户输入而设计的,您最好使用应用程序层来执行此操作 - shell 或命令脚本,或 Apex,或 PHP 等。