ネストされたものが呼び出されtable_generated_by_my_other_function
たときにループの最初の部分によって生成されたテーブルからデータを取得するときに、OID エラーを生成する次のような状況があります。function my_other_function()
これはどのように修正できますか?
この関数function my_other_function()
は、7 列のデータを 1 行だけ含むテーブルを生成します。この結果を別の方法で保存または返すことはできますか? コミットなしではテーブルが存在しないため、エラーが発生しますか?
function my_other_function()
それ自体で正常に動作します。
CREATE OR REPLACE FUNCTION my_function() RETURNS varchar AS $$
DECLARE
row_data RECORD;
helper int;
BEGIN
EXECUTE '
DROP TABLE IF EXISTS my_table_loop_result;
';
EXECUTE '
CREATE TABLE my_table_loop_result (
var1 varchar, var2 varchar, var3 varchar, var4 int,
var5 varchar, var6 varchar, var7 int)
';
FOR row_data IN SELECT var_x1, var_x2 FROM my_table_too
LOOP
SELECT my_other_function(row_data.var_x1, row_data.var_x2) INTO helper; --Returns "1" if OK
INSERT INTO my_table_loop_result(var1,var2,var3,var4,var5,var6.var7)
SELECT
var1,var2,var3,var4,var5,var6,var7
FROM table_generated_by_my_other_function --OID ERROR!
WHERE var1 = row_data.var1;
END LOOP;
RETURN 1;
END;
$$ LANGUAGE plpgsql;