2016-06-13 7 views
1

ist es möglich, nach dem Auslösen einer Ausnahme fortzufahren. Ich habe ein kleines Codebeispiel generiert, das dem ähnelt, was ich gerne machen würde. Ich kann nur Nullwerte von der ersten Abfrage erhalten, die anderen Abfragen bringen mir immer etwas zurück.Wie geht es weiter in Oracle Dynamic 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 

- andere Sachen und Fälle werden hier vorkommen.

Ich weiß, dass, wenn die erste dynamische sql nichts liefert, dann benutze ich den InUser. Ist etwas möglich?

Antwort

2

Wickeln Sie die dynamische Auswahl mit Beginn/Ende und behandeln die Ausnahme dort:

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; 
Verwandte Themen