考虑关注FOR
循环:
FOR constraintInfo IN
(SELECT table_name, column_name FROM user_cons_columns WHERE constraint_name = 'CNAME') LOOP ...
在FOR
循环中,我可以简单地通过table_name
访问column_name
或constraintInfo.table_name
。优点是我不必指定constraintInfo
。
现在,我想做类似的事情,只是这次加载一个特定的SELECT
语句,该语句总是将一行返回到变量中,然后稍后访问它。我尝试使用SELECT
并使用:=
将SELECT ... INTO var
语句直接分配到变量中,但是,这些方法要么不起作用,要么我之前已经定义过变量。< / p>
我的解决方案是将整个代码包装到FOR
循环中,因为我知道它只会运行一次(因为只返回一行),但这听起来不是最好的解决方案。
这样的事情会有可能吗?如果是这样,我怎么能实现这个目标?
由于
答案 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;