2016-06-13 18 views
1

是否有可能在引發異常後繼續。 我生成了一個與我想要執行的代碼相似的代碼示例。我只能從第一個查詢中獲得空值,其他查詢總是讓我回頭看看。如何在Oracle動態SQL中繼續使用

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。 有什麼可能嗎?

回答

2

裹動態選擇與開始/結束和處理存在異常:

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;