我正在尝试在plpgsql函数中使用动态选择查询创建一个数组,但不幸的是,我遇到了语法错误。
ERROR: syntax error at or near "EXECUTE"
ZEILE 19: SELECT DISTINCT INTO outputIdsToDelete ARRAY( EXECUTE findA...
^
有人可以帮我吗? 这是函数本身:
CREATE OR REPLACE FUNCTION deleteMAPPINGs( mapTable1_key 文本, mapping_table 文本, mapTable2_key 文本, table2 文本, table2_key 文本, inputIdsToDelete bigint[]) RETURNS bigint[] AS $BODY$ DECLARE outputIdsToDelete bigint[]; findAllQuery 文本; findUnreferencedQuery 文本; BEGIN findAllQuery := 'SELECT DISTINCT ' || mapTable2_key || ' FROM ' || mapping_table || ' WHERE ' || mapTable1_key || ' = ANY(inputIdsToDelete)'; findUnreferencedQuery := 'SELECT DISTINCT ' || table2_key || --查找未使用的 ' FROM ' || table2 || ' WHERE ' || table2_key || ' NOT IN (' || 'SELECT DISTINCT ' || mapTable2_key || --所有已使用的 ' FROM ' || mapping_table || ')';
SELECT DISTINCT INTO outputIdsToDelete ARRAY( EXECUTE findAllQuery );
DELETE FROM mapping_table WHERE mapTable1_key = ANY(inputIdsToDelete) AND mapTable2_key = ANY(outputIdsToDelete);
SELECT DISTINCT INTO outputIdsToDelete --覆盖未使用的 ARRAY(EXECUTE findUnreferencedQuery);
RETURN outputIdsToDelete; END; $BODY$ LANGUAGE plpgsql VOLATILE COST 100;
findAllQuery := 'SELECT DISTINCT ' || quote_ident(mapTable2_key) || ' FROM ' || quote_ident(mapping_table) || ' WHERE ' || quote_ident(mapTable1_key) || ' = ANY(inputIdsToDelete)';
?现在我的唯一问题是如何将我的输入数组inputIdsToDelete
绑定到选择查询中。我得到了另一个错误,像这样的错误:Error: Column inputIdsToDelete does not exist. 我应该开一个新的问题还是你能在这里帮助我? - Veselin