私はPostgreSQLを初めて使用しています。PostgreSQLの別の関数からテーブル関数を呼び出すには?
私は、他の機能func2
に、この出力を使用したい機能
CREATE OR REPLACE FUNCTION func1 (a_person_id integer) RETURNS TABLE (granted_group_id varchar(10)) AS $body$
WITH v_granted_group_list AS (
SELECT DISTINCT a.group_id
FROM a_table a
)
SELECT v.group_id FROM v_granted_group_list v;
$body$
LANGUAGE sql;
を持っています。
次のコードのようにして、エラーが発生しました。
v_access_groups
アレイの代わりに何が使えますか?
CREATE OR REPLACE FUNCTION func2 (a_person_id IN integer,mhrc_emp_no IN varchar(50))
RETURNS TABLE (granted_group_id varchar(10)) AS $body$
DECLARE
v_access_groups varchar[];
BEGIN
v_access_groups := func1(a_person_id);
---- this gives error
---ERROR: malformed array literal: "LCCHG"
----DETAIL: Array value must start with "{" or dimension information.
--------CONTEXT: PL/pgSQL function func2(integer,character varying) line 14 at SQL statement
-- what can we you in place of v_access_groups array
RETURN v_access_groups;
END;
$body$
LANGUAGE PLPGSQL;
私はどのように私は、PostgreSQLでこれを達成することができます選択クエリではまだ別の関数に
CREATE OR REPLACE FUNCTION func3 (a_blurb_id integer, a_person_id integer,mhrc_emp_no varchar(20)) RETURNS boolean AS $body$
DECLARE
v_acc_count numeric;
v_accessAllowed boolean:=FALSE;
BEGIN
SELECT COUNT(*) INTO v_acc_count
FROM table1 agfa
where agfa.group_id IN (
SELECT TO_CHAR(column_value) AS group_id
FROM TABLE(func2(a_person_id,mhrc_emp_no))
);
RETURN TRUE;
END;
$body$
LANGUAGE PLPGSQL;
をfunc2
の結果を使用したいですか?
横結合を使用する – murison
@mursion私はpostgresに新しいです。どのようにこれを達成することができますか? –