[pgsql-jp: 25407] functionの戻り値

Masakazu Ichimura m.ichimura @ nihontechno.co.jp
2002年 3月 26日 (火) 09:52:37 JST


市村です。

RedHat7.2 & PostgreSQL7.1.3で、
Cのプログラムからfunctionを呼び出した場合と
直接DBにアクセスした場合のスピードの比較をしたいと思っております。

functionの戻り値として、(複数)行を返すということは
可能なのでしょうか?

CのほうではDBに接続後、
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
PGconn		*conn;
PGresult	*res;
〜中略〜
//********************
//	CURSORを宣言する
//********************
res = PQexec(conn, "DECLARE mycursor CURSOR FOR select * FROM test1");
if( !res || PQresultStatus(res) != PGRES_COMMAND_OK)
{
	fprintf(stderr, "DECLARE CURSOR command failed\n");
	PQclear(res);
	return(-1);
}
PQclear(res);
//********************************
//	作成したCURSORのSQLを実行する
//********************************
res = PQexec(conn, "FETCH ALL in mycursor");
if( !res || PQresultStatus(res) != PGRES_TUPLES_OK)
{
	fprintf(stderr, "FETCH ALL command didn't return tuplesproperly\n");
	PQclear(res);
	return(-1);
}
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
上のようにしてresに取得したものを、
printf( "%s",PQgetvalue(res, x, y));
で表示しています。

これと同じような操作をfunctionを使って行いたいのですが、
宣言時に戻り値をどのように指定してよいのかわかりません。

プログラマーズガイドのほうでは、戻り値のほとんどがintegerやbooleanで、
行き詰まってしまっております。

どなたかよい方法をご存知でしたらご教授下さい。

-- 
***************************************************
          日本テクノシステム株式会社
          システム営業一部 システム課
          市村 正和
          E-MAIL:m.ichimura @ nihontechno.co.jp
***************************************************




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