[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 メーリングリストの案内