0

Cで書かれたコードにアクセスするPostgres 9.6用の関数を書こうとしています.

私の関数は次のように定義されています。

CREATE OR REPLACE FUNCTION graph_cluster_graph (sql text, has_rcost boolean)
  RETURNS SETOF RECORD AS
    '$libdir/libpgrouting-2.4', 'dir_graph_cluster_desc'
    LANGUAGE c STABLE STRICT;

それを呼び出そうとすると:

select * from   graph_cluster_graph('select * from case3_cab_dist_table',true);

エラーが発生します

record" "を返す関数には定義リストが必要です


書いたら効く

select graph_cluster_graph('select * from case3_cab_dist_table',true);

この場合、要求された C 関数を呼び出してから、戻るときにベイルアウトします。

何が起こるかを調べるためだけに C 関数の名前を変更しました (関数が見つからないというエラーが発生する可能性があります)。だから私はそれが私のCルーチンを見つけることができることを知っています. 再びselectステートメントの 2 番目の形式を使用して応答を取得することは、C 関数が正しく呼び出されたことを意味します。

私が間違っていることを誰か知っていますか?

4

1 に答える 1