カスタムタイプを作成しました
CREATE TYPE rc_test_type AS (a1 bigint);
と関数
CREATE OR REPLACE FUNCTION public.rc_test_type_function(test_table character varying, dummy integer)
RETURNS rc_test_type AS
$BODY$
DECLARE
ret rc_test_type;
query text;
BEGIN
query := 'SELECT count(*) from ' || test_table ;
EXECUTE query into ret.a1;
RETURN ret;
END $BODY$
LANGUAGE plpgsql VOLATILE
私が走れば
SELECT * FROM rc_test_type_function('some_table', 1);
私は得る
"a1"
1389
ここまでは順調ですね。
私が走れば
SELECT p FROM (SELECT rc_test_type_function('some_table', s.step) AS p
FROM some_other_table s) foo;
私は得る
"p"
"(1389)"
"(1389)"
「some_other_table」には 2 つのレコードしかないためです。罰金。
しかし、私が試してみると
SELECT p.a1 FROM (select rc_test_type_function('some_table', s.step) AS p
FROM some_other_table s) foo;
エラーが発生します
テーブル »p« のサブクエリに FROM 句のエントリがありません
サブクエリが変更されていないので、これは奇妙だと思います。
2 つの質問:
- 誰が何が起こっているのか説明できますか?
a1
返された配列からフィールド値を抽出するにはどうすればよいですか?