1

Oracle 11g に変換しようとしている SQL Server に次のクエリがあります。

IF '[Param.1]' = 'S' OR '[Param.1]' = 'T' THEN
select * from ULQUEUE
END IF

しかし、Oracle で同じクエリを作成すると、無効な SQL ステートメントを示すエラーが発生します。では、Oracle の Select ステートメントに IF-ELSE を組み込むにはどうすればよいでしょうか。

4

1 に答える 1

1

T-SQL ステートメントを変換しています。Oracle でこれに相当するのは、無名 PL/SQL ブロックです。

ただし、PL/SQL は T-SQL よりも少し要求が厳しいです。行を変数に選択する必要があります。クエリが複数の行を返す場合は、コレクション変数を定義するか、カーソルを使用する必要があります。

要件に応じて、次のようなものを作成できます。

begin
    if ( &&param1 = 'S' or &&param1 = 'T' ) then
        for lrec in ( select * from ulqueue ) loop
           do_something;
        end loop;
    end if;
end;
/   

これは T-SQL よりも手間がかかるように見えることに同意しますが、PL/SQL はより多くの機能を備えた適切なプログラミング言語です。 詳細をご覧ください

于 2012-11-01T08:22:10.073 に答える