我正在尝试做类似的事情:
SELECT * From stock ;
Define input ;
insert into STOCK values(&input) ;
commit ;
我的问题是,在显示提示弹出窗口以从用户获取用户input
值之前,选择的结果不会出现在脚本输出窗口中。
这个想法是用户可以查看表中缺少的条目,然后插入用户想要的值。查看选择后,将提示用户输入,输入所需的值然后提交。
如何在提示之前让它显示查询结果?
答案 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等。