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