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

abe_i abe_i @ yamagishi.or.jp
2005年 7月 16日 (土) 22:23:13 JST


阿部です。

後、もう少しのようですし、内容もPHPの話になっていますので、
これ以降は自分で解決されたほうがいいと思います。

ちょっとキツイかもしれませんが、少し注意深さが足りないように
思います。

>hanbaidb=#select  get_nmaster_rcount('tel like ''%086%''');
と
>$ncount="select * get_nmaster_rcount($where_jouken)";

では何か違っていませんか。

では、頑張ってください。


> 小山です。
> 
> 
>  阿部さんご回答ありがとうございました。
> 
> > 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"
> としているのでレコード型を返すことになるのでしょうか?
> 
> どうぞよろしくお願いします。

-- 
阿部 <abe_i @ yamagishi.or.jp>




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