[pgsql-jp: 35726] Re: RETURNの戻り値をレコードセットと一緒に受取る

Koyama Manabu sm-bunbun-ll @ mx9.tiki.ne.jp
2005年 7月 15日 (金) 20:27:19 JST


小山です。


 阿部さんご回答ありがとうございました。

> create or replace function get_nmaster_rcount(text) returns integer as '
> declare
> jouken alias for $1;
> sql text;
> REC RECORD;
>
> begin
> sql:=''select count(ninusi_code) as n_count from ninusi_mastert where '' 
> || jouken;
>
> FOR REC IN EXECUTE sql LOOP
> END LOOP;
>
> RETURN REC.n_count;
> end;
> ' language plpgsql;
と上記のように記述し直し
psql
hanbaidb=#select  get_nmaster_rcount('tel like ''%086%''');
と実行すると
------------------
get_nmaster_rcount
------------------
437
------------------
と表示されるのでうまくいっているようです。
しかしPHP側で
$ncount="select * get_nmaster_rcount($where_jouken)";
$c_n= & $this->db_object->getOne($ncount);
echo $c_n ."\n";
とすると"Object"と表示されてしまいます。
PHPの話で怒られそうですが、
create or replace function get_nmaster_rcount(text) returns integer as '
の部分で"returns integer"としているので
数値が、"$c_n"に代入されそうな気がするのですが、(この場合"437")
違うのでしょうか?

"getRow"としても同じでした。
declareの部分に"REC RECORD"
としているのでレコード型を返すことになるのでしょうか?

どうぞよろしくお願いします。




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