Eine Zeile IF-Bedingung in PL/SQL
Es ist möglich, schreiben Sie eine Zeile, wenn ' s in pl/sql? Ich bin nur neugierig.
Möchte ich schreiben das snippet:
IF ( i.DECISAO_AT = 'S')
THEN 'PA'
ELSE 'I'
END IF;
Und ich möchte wissen ob es möglich ist, schreiben Sie es in einer Linie, genau wie java. Wie diese:
IF ( i.DECISAO_AT = 'S') ? 'PA' : 'I' ;
Dank!
- ja, Sie können tun, dass in plsql-editor , wenn Sie möchten, gibt es verschönerer, die kann organisieren, die Linie in mehrere
- Engine parst SQL, Wetter können Sie auch auf einer Linie oder 50, der Motor egal ist. separate Linien für die menschliche Lesbarkeit. Setzen Sie die 4 Zeilen in deinem Beispiel 1 ohne code ändern und sehen, was passiert.
- Ich habe diese Frage nicht, da die Optimierung oder die Lesbarkeit des Codes. Wie gesagt, ich fragte nur für Neugier.
- Und ich sagte im Grunde genommen, ja es wird in 1 line-vorausgesetzt, Sie haben die richtigen Räume in der syntax
IF ( i.DECISAO_AT = 'S') THEN 'PA' ELSE 'I' END IF;
- in diesem Fall, du hast nicht verstehen, meine Frage 🙂
- haben Sie noch etwas nicht klar, so können wir Ihnen helfen ?
- dann habe ich wirklich nicht bekommen, die Frage an alle. Ich kann sagen, dass Sie wieder schreiben Sie Ihre Abfrage in ORACLE werden
select decode(i.decisao_AT,'S','PA','I') from dual;
aber all dies wird nur eine andere syntax für das gleiche. Oracle Docs auf Decode Dekodierung syntax für wenn, dann, sonst, ohne wenn, dann, sonst. es könnte auch getan werden, alscase when i.decisao_at='S' then 'PA' else 'I' end
aber da bin ich mir noch nicht sicher, was Sie nach, ich weiß nicht, ob einer der oben genannten Punkte relevant.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Schreiben Sie eine
IF ... ELSE ... END IF;
auf einer Linie wie die anderen gezeigt haben; aber Nein, Sie kann nicht tun, was Sie vorgeschlagen, und schreiben Sie es "genau wie in Java":PL/SQL nicht verstehen, die Java
?
und:
syntax, und nicht seine eigene ternäre Operatoren als solche. Sie können nur was ist in der Dokumentation beschrieben. Die nächste Sache, was ich denke, Sie werden Fragen, die für diese bestimmte Anweisung sowieso, ist wohl eincase
:Oder vielleicht ein
decode
als xQbert bereits vorgeschlagen, in einem Kommentar. Weder ist ein "WENN" mehr, obwohl.Könnten Sie die
DECODE
- Anweisung, die Sie verwenden können inline:Die syntax für die Funktion DECODE in Oracle/PLSQL ist:
DECODE( expression , search , result [, search , result]... [, default] )
Ist es kein problem, in
PL/SQL
ausführen von code, wenn es in einer Zeile oder mehreren Zeilen . Was es wichtig ist die syntax korrekt ist.Sicher, Sie können, aber auf der Straße, wenn Sie Debuggen müssen, dass, wenn mit mehreren tests wird es sein, ein Schmerz. Halten Sie Sie auf separaten Zeilen, somit leichter zu Lesen, Debuggen, Kommentar und einfacher (und somit billiger) für die Wartung auf der Straße. Den nächsten Kerl zu arbeiten, werden es Ihnen danken.
Ich in einem Buch gelesen (ich glaube, es war "C elements of style") einmal: "hütet Euch davor, clever, clever tötet"). Halten Sie es einfach und leicht. Code für den Kerl, nachdem Sie zu pflegen Sie Ihre code.
Können Sie ENTSCHLÜSSELN, zusammen mit einer SELECT INTO-da unten. "my_var" wäre eine deklarierte variable zum halten des dekodierten Wert.