Gegeben sei der folgende Text einer Fallaussage:
%Vor%Ich nehme an, Zeile 2 wird immer vor Zeile 4 ausgeführt? Dann lese ich Anweisungen wie ' SQL ist eine deklarative Sprache, was bedeutet, dass es der SQL-Engine sagt, was zu tun ist, nicht wie ' in
Reihenfolge der Ausführung der SQL-Abfrage
und frage mich, ob dies auch die Reihenfolge der Ausführung in der CASE-Anweisung betrifft. Im Wesentlichen kann ich den obigen Code unverändert lassen, ohne Zeile 4 in
ändern zu müssen %Vor% Der Wert, der zurückgegeben wird, ist der Wert des Ausdrucks THEN
für die früheste WHEN
-Klausel (textuell), die übereinstimmt. Das heißt, wenn Ihre Bedingungen für Zeile 2 erfüllt sind, lautet das Ergebnis A2
.
Aber, wenn Ihre THEN
-Ausdrücke komplexer als nur literale Werte waren, können einige der Arbeiten, diese Ausdrücke auszuwerten, vorkommen, selbst wenn dieser Ausdruck nicht benötigt wird.
z. B.
%Vor% könnte einen Division-by-Zero-Fehler erzeugen, auch wenn r.code
nicht gleich 0120
ist, und selbst wenn es gleich 00
ist, sagen wir. Ich weiß nicht, was der Standard zu diesem speziellen Thema zu sagen hat, aber ich weiß, dass es für einige Produkte gilt.
AFAIK, Die Reihenfolge von CASE
evaluation ist die Reihenfolge, die Sie in Ihrer Abfrage angegeben haben. In Ihrem Fall ist die Reihenfolge der Auswertung 1,2,3,4 ... , 7
kann ich den obigen Code unverändert lassen, ohne Zeile 4 in
ändern zu müssen
Sie können Ihre 2. CASE
ändern und einen ELSE
-Teil wie unten eintragen, der sich um 4. CASE
evaluation kümmert und Sie können die 4. Auswertung komplett entfernen