Ich habe einen If-Anweisungsblock ähnlich dem folgenden, der mit dem Fehler fehlschlägt - PLS-00103: Das Symbol "SELECT" wurde erkannt, wenn eines der folgenden ...skalare Unterabfrage in if-Anweisung Bedingung in PL/SQL
.Begin
If (select count(*) from Table1) > 0 then
dbms_output.put_line('Test');
end if;
end;
ich habe ähnliche Case-Anweisung, die
select
case
when (select count(*) from Table1) > 0
then 2
else
1
end
from dual
Von gut funktioniert, was ich in Oracle-Dokumentation gelesen haben, die, ob und wann Unterstützung ein BoolAusdruck, irgendwelche Ideen, ob Subqueries in If Bedingungen unterstützt werden.
Hinweis: Die Aussagen wurden vereinfacht, ich bin nicht wirklich die Zählung der gesamten Tabelle in Gang zu bringen, so dass keine Optimierungsvorschläge bitte
Ich sah die Syntax für IF und CASE unter http up: // download.oracle.com/docs/cd/B19306_01/appdev.102/b14261/if_statement.htm#sthref2791 und http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14261/case_statement.htm# sthref2511, beide hatten einen booleschen Ausdruck für die Bedingung, die verwendet werden muss. –
Ja, das stimmt. Ich sage, der Unterschied liegt nicht zwischen IF und CASE, es ist zwischen CASE als prozedurale Anweisung und CASE als Ausdruck in einer SQL-Anweisung. –
Dave, ich habe dich, ich habe die CASE Unterschiede in SQL und PL/SQL vergessen. Also denke ich, dass die Verwendung von CASE in PL/SQL auf die gleiche Weise fehlschlagen sollte. –