| ||||||||||||||||||||||||||||
| 前のページ 1 2 | ||||||||||||||||||||||||||||
| 制御構造 | ||||||||||||||||||||||||||||
Oracle、PostgreSQLともに、基本的な制御文は同じものが揃っており、そのまま通用します。 | ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
| GOTO文 | ||||||||||||||||||||||||||||
ただしPL/pgSQLでは、GOTO文がサポートされていません。しばしばGOTO文は、上述した制御構造では簡単には記述できない場合に使用されます。他の制御構造で代用した場合には、変換に手間取ることがあるでしょう。 | ||||||||||||||||||||||||||||
| RETURN文 | ||||||||||||||||||||||||||||
単一の値を返すPL/SQLのストアドファンクションでは、RETURN文が最低1つは必要です。同じように、PL/pgSQLでもRETURN文が1つは必要なことに注意してください。 一方、PL/SQLのストアドプロシージャでRETURN文を使うとエラーになることに注意してください。これは、PL/SQLのストアドプロシージャでは、OUT系パラメータ(後述)を使って値を返すためです。 | ||||||||||||||||||||||||||||
| NULL文 | ||||||||||||||||||||||||||||
OracleではNULL文が使えますが(リスト14)、PostgreSQLではNULL文は許されていません(リスト15)。しかし、NULL文は実質的に何もしない文なので、単純に削除すればOKです。 | ||||||||||||||||||||||||||||
BEGIN | ||||||||||||||||||||||||||||
リスト14:OracleのNULL文 | ||||||||||||||||||||||||||||
CREATE FUNCTION HAS_ERROR() | ||||||||||||||||||||||||||||
リスト15:PostgreSQLのNULL文(エラー) | ||||||||||||||||||||||||||||
| リスト15を実行するとエラーになります。 | ||||||||||||||||||||||||||||
| パラメータ | ||||||||||||||||||||||||||||
PostgreSQLは、Oracleのような名前付きパラメータ宣言(リスト16)に直接対応していませんが、ALIAS FORを使えば間接的に対応することができます(リスト17) | ||||||||||||||||||||||||||||
CREATE FUNCTION | ||||||||||||||||||||||||||||
リスト16:Oracleの名前付きパラメータ宣言 | ||||||||||||||||||||||||||||
CREATE FUNCTION | ||||||||||||||||||||||||||||
リスト17:PostgreSQLでのALIAS FORの利用 | ||||||||||||||||||||||||||||
SELECT SAY_A_IS_B('dog', 'animal') | ||||||||||||||||||||||||||||
| 実行結果は次のとおりです。 | ||||||||||||||||||||||||||||
say_a_is_b | ||||||||||||||||||||||||||||
| 前のページ 1 2 | ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||

