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

Koyama Manabu sm-bunbun-ll @ mx9.tiki.ne.jp
2005年 7月 12日 (火) 18:36:25 JST


小山です。
阿部さんご回答ありがとうございました。
ご返事が遅れてすいませんでした。

> やりたいことは、条件に該当するninusi_master の件数の取得と
> 条件に該当するデータの intfirst 番目から 20件のデータを取得する事
> という理解で話を進めさせてもらいます。
はいそうです。
そういうことで以下のようなデータ件数を取得するfunctionを別にもうひとつ設けました。
------------------------------------------------------------------
create or replace function get_nmaster_rcount(text) returns integer as '
declare
jouken alias for $1;
sql text;

begin
sql:=''select count(ninusi_code) as n_count from ninusi_mastert where '' || 
jouken;
execute sql;

return;
end;
' language plpgsql;
-------------------------------------------------------------------
で"get_ninusi_value.php"で以下のように呼び出しました。
-----------------------------------------------------------
<?php
require_once("db_connect.php");
require_once("sakusei_jouken.php");

class Nkensaku_class extends db_conclass{
function Nkensaku_class() {
 $this->db_conclass();
}

function search_ninusi() {
list($var1,$var2,$var3)=get_form_value();
<略>
//条件の作成
$j=new jouken_class($var1);
$where_jouken=$j->create_jouken($where_str);
print($where_jouken."<br />");
$var_sql="select * from nmaster_func3($where_jouken,$var3)";

//********この部分*******************************
$ncount="select * get_nmaster_rcount($where_jouken)";
print($ncount."<br />");
//**********************************************

$res=$this->db_object->getAll($var_sql,array(),DB_FETCHMODE_ASSOC);
//page数を取得
if ($ncount>20) {
 $page_count=ceil($ncount/20);
} else {
 $page_count=1;
}

if(DB::isError($res)) {
 print $res->getDebugInfo();
 exit;
 }
$this->smarty_obj->assign("t_array",$res);
$this->smarty_obj->assign('loop',$page_count);
$this->smarty_obj->display("kekka_hyouji.tpl");
$this->db_object->disconnect();
exit;
 }
}
$init_class=new Nkensaku_class();
$init_class->search_ninusi();
$this->db_object->disconnect();
?>

<?php
<略>
?>
-------------------------------------------------
しかしこれだと
データは表示されますが、
"print($ncount."<br />");"の部分が"1"と表示されてしまいます。
(件数は、"1"以上あります。)
阿部さんの考えていることと一致しているでしょうか?

取得できた件数を20で割って商を、1 2 3 4 5 ....
(googleのような検索サイトの下に出てくるようなもの)にリンクをはりたいのです。 


PL/PgSQLでなくPHPでことが足りるのでしょうか?
ではよろしくお願いします。 




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