エラーが発生した以下のようなIfステートメントブロックがあります。 PLS-00103:次のいずれかが予想される場合、シンボル "SELECT"が検出されました。 。ifステートメントのスカラーサブクエリ
Begin
If (select count(*) from Table1) > 0 then
dbms_output.put_line('Test');
end if;
end;
は、私は私がOracleドキュメントで読んだものから
select
case
when (select count(*) from Table1) > 0
then 2
else
1
end
from dual
正常に動作し同様のCaseステートメントを持っている場合は、いつサポートブール式、サブクエリは、If条件にサポートされているかどうか任意のアイデア。
注:文簡素化されました、私は本当に何の最適化の提案はしてください
http://でIFとCASEの構文を調べました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とSQL文内の式として使用されるCASEの間にあります。 –
Dave、私はあなたを得ました、SQLとPL/SQLのCASEの使い方の違いを忘れました。だから私は同じ方法で失敗する必要がありますPL/SQLでCASEを使用すると思います。 –