У меня есть блок If Statement, аналогичный приведенному ниже, который не работает с ошибкой - PLS-00103: встречается символ «ВЫБРАТЬ» при ожидании одного из следующих ... .скалярный подзапрос в выражении if Условие в PL/SQL
Begin
If (select count(*) from Table1) > 0 then
dbms_output.put_line('Test');
end if;
end;
у меня подобное заявление Case, который работает отлично
select
case
when (select count(*) from Table1) > 0
then 2
else
1
end
from dual
Из того, что я прочитал в Oracle документации КРП и при поддержке логическое выражение, любые идеи, поддерживаются ли подзапросов в если условия.
Примечание: Отчетность упрощены, я на самом деле не собирается получить количество всей таблицы, поэтому никаких предложений по оптимизации Пожалуйста
Я искал синтаксис IF и CASE по адресу http: // download.oracle.com/docs/cd/B19306_01/appdev.102/b14261/if_statement.htm#sthref2791 и http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14261/case_statement.htm# sthref2511, у обоих из них было логическое выражение для условия, которое необходимо использовать. –
Да, это правда. Я говорю, что разница не между IF и CASE, это между CASE, используемым как процедурный оператор, и CASE используется как выражение в выражении SQL. –
Дэйв, я понял, я забыл различия в использовании CASE в SQL и PL/SQL. Поэтому я предполагаю, что использование CASE в PL/SQL таким же образом должно завершиться неудачей. –