1

以下のようにpostgresqlでプロシージャを作成しました。

CREATE OR REPLACE FUNCTION public.functiontest2(
    IN data numeric,
    OUT result numeric,
   OUT result1 numeric)
RETURNS record AS
$BODY$
  DECLARE
    declare SEQVAL decimal := 10;

    BEGIN   
      result=SEQVAL;
      result1=data;
    END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;

これで、ノード pg からこの手順を次のように実行しました。

client.query('select functionTest2(10)', input, function(err, result){});

以前、上記のコードを実行すると、次の形式の結果が得られました。

{
"command":"SELECT",
"rowCount":1,
"oid":null,
"rows":[{"result":"10"},{"result1":"10"}],
"fields":[{"name":"result","tableID":0,"columnID":0,"dataTypeID":1700,"dataTypeSize":-1,"dataTypeModifier":-1,"format":"text"}],
"_parsers":[null],
"rowAsArray":false
}

しかし、今はノード pg モジュールをアンインストールし、ノード pg モジュールを再度インストールしました。次の形式で結果が得られます

{
 "command":"SELECT",
 "rowCount":1,
 "oid":null,
 "rows":[{"functiontest2":"(10,10)"}],
 "fields":          [{"name":"functiontest2","tableID":0,"columnID":0,"dataTypeID":2249,"dataTypeSize":-1,"dataTypeModifier":-1,"format":"text"}],
 "_parsers":[null],
 "rowAsArray":false}

したがって、違いは、レコードの名前と値のペアを返す代わりに、関数名と値の配列を返すことです。別のバージョンの node pg モジュールをインストールしようとしましたが、問題は解決しません。

前もって感謝します。

4

1 に答える 1

2

わかりました..私は問題を見つけました..実際には、select * from function2(10);のようなクエリを使用する必要があります。それは問題を解決していました

于 2016-05-02T08:19:44.337 に答える