在 Oracle 动态 SQL 之后如何继续
Posted
技术标签:
【中文标题】在 Oracle 动态 SQL 之后如何继续【英文标题】:How to continue after in Oracle Dynamic SQL 【发布时间】:2016-06-13 13:14:41 【问题描述】:是否可以在引发异常后继续。 我生成了一个与我想要执行的代码类似的代码示例。我只能从第一个查询中获取空值,其他查询总是让我得到一些回报。
Case Username = InUser Then
Execute Immediate
'select Username from Users where Fullname = ' || '''' || InUser || '''' into Varuser;
<< go_on >>
Execute Immediate
'select Orderno from orders where requester = ' || '''' || VarUser || '''' into VarOrderno
--这里会发生其他事情和案例。
End Case;
EXCEPTION WHEN NO_DATA_FOUND THEN
VarUser := InUser;
Goto go_on;
我知道,如果第一个动态 sql 没有提供任何内容,那么我使用 InUser。 有什么可能吗?
【问题讨论】:
【参考方案1】:用 begin/end 包装动态选择并在那里处理异常:
Case Username = InUser Then
begin
Execute Immediate
'select Username from Users where Fullname = ' || '''' || InUser || '''' into Varuser;
EXCEPTION WHEN NO_DATA_FOUND THEN
VarUser := InUser;
end;
Execute Immediate
'select Orderno from orders where requester = ' || '''' || VarUser || '''' into VarOrderno
End Case;
【讨论】:
以上是关于在 Oracle 动态 SQL 之后如何继续的主要内容,如果未能解决你的问题,请参考以下文章