【发布时间】:2017-03-29 09:36:01
【问题描述】:
我有一个可以在 toad 中运行的简单查询。
select * from my_table
where my_id = 11111;
为什么这次我不能从 toad 运行相同的查询来声明一个变量并在 where 子句中使用它?
在 sql server 中我会:
declare @testID int
set @testID = 11111
select * from my_table
where my_id = @testID;
如何在 Oracle 11g 中完成同样的任务?
【问题讨论】:
-
取决于.. 如果您这样做是为了进行测试,并且您想在运行时捕获该值,您可以只使用
select * from my_table where my_id = &testID;和符号表示在执行时需要用户输入的变量。在 Oracle 中要小心这一点,就好像你有一个像 Mike & Jon's Paint 和 body 这样的名字,它可能会要求你定义 Jon 变量! (这可以被禁用:见here) -
对于类似的问题,前面已经给出了答案。看看here
-
@xQbert 我有多个“从 id = &id 的表中选择 *”查询。如果我要添加 &id ,它会在每次执行查询时提示我。我可以做一些事情来提示一次,并且一次又一次地使用相同的值。
-
@ASharma7 未经测试,但这个概念应该有效:使用 selct 语句并交叉连接到变量
SELECT A.*, Z.MyTestValue FROM tableName A cross join (Select &myTestValue myTestValue from dual) Z但只有当您可以合并多个选择的结果并进行交叉连接时才有效工会之后。这是一个不同的问题:我建议问一个新问题。如果上述方法不起作用
标签: oracle