将SELECT语句的结果加载到变量

时间:2015-11-29 16:26:27

标签: oracle plsql oracle11g

考虑关注FOR循环:

FOR constraintInfo IN
  (SELECT table_name, column_name FROM user_cons_columns WHERE constraint_name = 'CNAME') LOOP ...

FOR循环中,我可以简单地通过table_name访问column_nameconstraintInfo.table_name。优点是我不必指定constraintInfo

现在,我想做类似的事情,只是这次加载一个特定的SELECT语句,该语句总是将一行返回到变量中,然后稍后访问它。我尝试使用SELECT并使用:=SELECT ... INTO var语句直接分配到变量中,但是,这些方法要么不起作用,要么我之前已经定义过变量。< / p>

我的解决方案是将整个代码包装到FOR循环中,因为我知道它只会运行一次(因为只返回一行),但这听起来不是最好的解决方案。

这样的事情会有可能吗?如果是这样,我怎么能实现这个目标?

由于

1 个答案:

答案 0 :(得分:1)

如果您已有变量,只需执行

select somecolumn INTO yourVariable from someTable;

仅此一点就可以完成这项工作。请注意,如果选择不起作用,您将获得NO_DATA_FOUND例外。

是的,您需要先定义yourVariable。但是,自从你尝试some := select...后,我认为它已经存在。

要避免NO_DATA_FOUND例外,您可以执行以下操作:

begin
  select somecolumn INTO yourVariable from someTable;
Exception
   when NO_DATA_FOUND then
    yourVariable:=null;
end;