[pgsql-jp: 32129] Cursor に入っている行数のカウント

UCHIDA, Hitoshi gin @ kohoku.jac-net.com
2004年 1月 27日 (火) 19:01:42 JST


内田です。

php  + PostgreSQL で、cursor に格納した結果を一行づつ取り出して処理
するとき、最終的に何件結果が得られたかで、取り出しながら行う処理が違
うというような場合、どうしたら良いと思いますか?

  # Oracle だと rowcount で取得できるようですが

たとえば、ある select の結果が 1000 件未満のときは処理 A 、1000 件
以上の時は処理 B を、行毎に順次適用するというような感じです。

最初に count() で数えてから再度 declare というのも、結果を格納した 
cursor を fetch or move で最後まで数えてというのもいまいちです。

move all in CURSOR_NAME で帰ってくるコマンドタグが取得できれば簡単か
とも思ったのですが、PHP からだとコマンドタグを取得できる pg_ 関数が
見当たりません。

select A,B,C とするところを、かならず select count(*),A,B,C と書き換
えるのが一番無難なような気がするのですが、もうすこしスマートな方法は
無いでしょうか?

PostgreSQL 7.4.1, PHP 4.3.4 です。

----------------
うちだ ひとし  (Uchida, Hitoshi)
gin @ kohoku.jac-net.com



pgsql-jp メーリングリストの案内