に、私はこの線に沿ってのPostgresで関数を作成したいWHERE ...のUSING:Postgresの機能
CREATE OR REPLACE FUNCTION public.getAvailableForms (
get_form_names TEXT[]
) RETURNS TABLE (
id INTEGER,
name TEXT,
location TEXT,
created TIMESTAMP
) AS $$
BEGIN
RETURN QUERY
SELECT *
FROM form
WHERE form.name IN get_form_names;
END;
$$ LANGUAGE plpgsql
SECURITY DEFINER;
しかし、それはWHERE form.name IN get_form_names
が文法的に間違っていることを私に伝えます。
postgres関数呼び出しで配列変数を使用する方法に関するドキュメントが見つかりません。
とにかく、WHERE ... IN
で関数引数として渡された配列値を使用することはできますか?
本当に 'select *'をしているのなら、テーブルを出力として宣言する必要はありません。代わりに 'RETURNS TABLE(...)AS'の代わりに' RETURNS SETOF form AS'を実行することができます。これはあなたの問題を示すための原始的な例かもしれませんが、本当に文字通り "フォーム"テーブルからすべてのフィールドを返すのであれば、これは参考になるかもしれません。 – Hambone