Oracle plsql - 可以在plsql if语句中使用查询吗?

时间:2014-02-27 21:31:37

标签: oracle plsql oracle11g

我甚至不知道这是否可行,但我想要完成的是在不使用SELECT INTO的情况下比较表中的单个不同值。这不是必需的。我所要做的就是看它是否可以完成。显然我可以使用SELECT INTO来解决这个问题,但我认为只用一行就可以了。

以下是我想要实现的目标:

 var1 := 'some_text';
 if var2 > 0 
   and var1 <> (select distinct col_text from some_table)
 then
  null;

这不是合法的oracle plsql。因此,如果不添加任何其他代码行,如何才能进行比较呢?

许多不同尝试中的一个:

我的想法背后是创建一个记录类型,并希望将它转换为这种类型所有在一行,然后它将被评估。只是一个FYI我想到了这个,因为我有PHP背景。

 --rec is of %rowtype
 var1 := 'some_text';
 if var2 > 0 
   and var1 <> (rec := (select distinct col_text from some_table)).col_text
 then
  null;

研究

从我在oracle文档中读到的内容看起来并不可能,但我正在尝试查看是否存在某种类型的解决方法。

http://docs.oracle.com/cd/B28359_01/appdev.111/b28370/fundamentals.htm#CBJCAHGF

我检查了转让声明中的文档。希望我能找到一些有趣的东西。

http://docs.oracle.com/cd/B28359_01/appdev.111/b28370/assignment_statement.htm#LNPLS01301

1 个答案:

答案 0 :(得分:3)

你想做的事是不可能的。您需要将select语句的结果返回到PL / SQL变量中,以便执行IF语句。

Oracle有不同的SQL和PL / SQL引擎。它们密切相关,但PL / SQL仍然是一种“客户”语言。