Oracle に変換しようとしていた T-SQL の一部に出会いました。次のようになります。
SET @local variable=
CASE
when exists (select field from table where value=0) then 0
when exists (select same field from same table where value=1) then 1
when exists (select same fieldfrom same table where value=2) then 1
else @local variable
END
@local 変数は、手順の前半でクエリの結果に設定されています。
ここで、これを次の方法で Oracle に変換しようとしました。
BEGIN
SELECT CASE
WHEN EXISTS (
SELECT field
FROM table
WHERE value = 0
)
THEN 0
WHEN EXISTS (
SELECT same field
FROM same table
WHERE value = 1
)
THEN 1
WHEN EXISTS (
SELECT same field
FROM same table
WHERE value = 2
)
THEN 1
ELSE localvariable
END
INTO localvariable
FROM DUAL;
END;
ただし、PL/SQL は、else ステートメントとinto ステートメントで @localvariable を使用することを好まないようです。これはそもそも適切に記述されたクエリではない可能性があることは承知していますが、ここでの解決策は何ですか? これを合法的なPL/SQLで書くにはどうすればよいですか?