PostgreSQLとOracleによるデータベース相互移行マニュアル 12

ストアドプロシージャの移行(4)

カーソル処理   カーソルの宣言は、単純にCURSOR句とカーソル名の順番を入れ替えればOKです。Oracleのカーソル宣言(DECLAREブロック中で) CURSOR C1 IS SELECT ...

奥畑 裕樹

2005年12月26日 20:00

カーソル処理


   カーソルの宣言は、単純にCURSOR句とカーソル名の順番を入れ替えればOKです。


Oracleのカーソル宣言(DECLAREブロック中で)

CURSOR C1 IS SELECT ... ;

PostgreSQLのカーソル宣言(DECLAREブロック中で)


C1 CURSOR IS SELECT ... ;

 

カーソル属性

   Oracleには、次のカーソル属性があります。



  • %FOUND
  • %ISOPEN
  • %NOTFOUND
  • %ROWCOUNT

   PostgreSQLには、%FOUND属性に相当するFOUND変数がありま す。%NOTFOUND属性は、FOUND変数の否定、つまりNOT FOUNDとして擬似的にサポートされます。%ISOPENおよび%ROWCOUNTについては、サポートされていませんが、等価な変数を用意すれば擬似 的に対応は可能です。

   また、PostgreSQLのFOUND変数は、すべてのカーソルで共通な特殊変数として実装されています。どの時点でもNULLや例外にはならず、表6にあるようなOracleのFOUND属性の振る舞いと異なりますので注意が必要です。

表6:Oracleにおけるカーソル属性の振る舞い

表6:Oracleにおけるカーソル属性の振る舞い
(画像をクリックすると別ウィンドウに拡大表示します)


   また、PostgreSQLのFOUND変数は、どのカーソルかに関係なく、常に直前のフェッチに対する結果を示します。そのため、複数のカーソルを同時に開いているときは、FOUND変数がどのカーソルのフェッチ結果を示しているのかに注意する必要があります。

 

この記事をシェアしてください

人気記事トップ10

人気記事ランキングをもっと見る