在替换变量提示之前,选择输出不会显示

时间:2016-04-27 09:18:38

标签: oracle oracle-sqldeveloper

我正在尝试做类似的事情:

SELECT * From stock ; 
Define input ; 
insert into STOCK values(&input) ; 
commit ; 

我的问题是,在显示提示弹出窗口以从用户获取用户input值之前,选择的结果不会出现在脚本输出窗口中。

这个想法是用户可以查看表中缺少的条目,然后插入用户想要的值。查看选择后,将提示用户输入,输入所需的值然后提交。

如何在提示之前让它显示查询结果?

1 个答案:

答案 0 :(得分:1)

我没有看到你在SQL Developer 4.1.3中描述的内容,除非我删除了define行,它没有做任何有用的事情。

select紧跟insert后,在脚本输出窗口中显示查询输出之前确实会弹出替换提示。因此,使用此脚本首先提示:

SELECT * From stock ; 
insert into STOCK values(&input) ; 

在它们之间放置除空格之外的任何内容似乎都“修复”它,甚至是注释行,因此该脚本会在提示之前在脚本输出窗口中显示结果:

SELECT * From stock ;
--
insert into STOCK values(&input) ; 

您还可以使用accept命令:

SELECT * From stock ;
accept input prompt 'New value'
insert into STOCK values(&input) ; 

据推测,这与SQL Developer如何将脚本解析为语句并依次处理每个语句有关。当然,SQL Developer的早期版本可能会有不同的行为,因此您仍然可以使用define行看到它 - 尽管它只会在脚本窗口中生成类似“SP2-0135:符号INPUT is UNDEFINED”的消息,除非在define和insert之间有什么东西,否则在提示之后再次。

你正在做的事情并没有多大意义,因为它不允许用户决定他们实际上不想/需要插入任何东西,如果他们看到多个值缺失他们有再次运行整个脚本。客户端并非真正设计用于此类交互式用户输入,您最好使用应用程序层来执行此操作 - shell或命令脚本,Apex或PHP等。