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 関数が正しく呼び出されたことを意味します。
私が間違っていることを誰か知っていますか?