2016-04-27 43 views
0

我试图做这样的事情:选择输出不会置换前变量提示显示

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

我的问题是,选择的结果不会出现在脚本输出窗口,直到提示弹出后已显示从用户获得用户的值input

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

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

+0

什么是您的输入值? – iOS

+1

该选择没有出现在哪里?我真的不明白你在问什么,或者在做什么。你如何运行这个,并从哪里?您是否打算*提示*输入,而不是在运行前定义它?如果不需要插入,或者需要插入多个值,该怎么办?标题中的“交易”是什么意思? –

+0

输入值是用户定义的。用户进入提示框。 该选择未出现在脚本输出中。我希望能够从select中查看输出,然后插入表中。在显示select – Broomer

回答

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被解析纸条写入语句并依次处理。当然,早期版本的SQL Developer可能会有不同的表现,因此您仍然可以通过define行来看到它 - 尽管在提示符之后,脚本窗口中只会生成类似“SP2-0135:symbol INPUT is UNDEFINED”的消息除非定义和插入物之间存在某种东西。

虽然你在做什么并没有多大意义,因为它不允许用户决定他们实际上不需要/不需要插入任何东西,并且如果他们看到多个值丢失,必须再次运行整个脚本。客户端并不是真正为这种交互式用户输入而设计的,并且您最好使用应用程序层来执行此操作 - 外壳或命令脚本,或Apex或PHP等。

+0

中这样在您发布的第二个代码片段显示选择的结果,然后打开提示?我没有得到相同的结果,只是在显示select之前打开输入提示符。 是的,我确实看到它不是我们没有涉及到的最有用的想法 “客户端并不是真正为这种交互式用户输入而设计的,并且最好使用应用层来完成这个任务 - 一个shell或命令脚本或Apex或PHP等。“但因为它只是我们选择模块时明年的介绍模块 – Broomer

+0

@Broomer - 是的,这就是我所遇到的。你正在使用哪个版本的SQL Developer?并且在select(或定义如果保留)和insert(和/或空白行)之间添加额外的注释行会影响行为? –

+0

嗨, 即时通讯使用4.1.3.20,没有提到的东西改变行为? – Broomer