7

我正在尝试在 plpgsql 函数中创建一个带有动态选择查询的数组。不幸的是,我收到语法错误。

ERROR:  syntax error at or near "EXECUTE"
ZEILE 19:  SELECT DISTINCT INTO outputIdsToDelete ARRAY( EXECUTE findA...
                                                         ^

有人可以帮我吗?这是函数本身:

创建或替换函数 deleteMAPPINGs(
   mapTable1_key 文本、mapping_table 文本、mapTable2_key 文本、
   table2 文本,table2_key 文本,
   inputIdsToDelete bigint[]) 返回 bigint[] AS
$身体$
宣布
    outputIdsToDelete bigint[];
    findAllQuery 文本;
    findUnreferencedQuery 文本;
    开始
    findAllQuery := 'SELECT DISTINCT ' || mapTable2_key ||
        '来自' || 映射表 ||
        '在哪里' || mapTable1_key || ' = ANY(inputIdsToDelete)';
    findUnreferencedQuery := 'SELECT DISTINCT ' || table2_key || --查找未使用的
        '来自' || 表2 ||
        '在哪里' || table2_key || '不在 (' ||
            '选择不同的' || mapTable2_key || --全部使用
            '来自' || 映射表 || ')';

    SELECT DISTINCT INTO outputIdsToDelete ARRAY(EXECUTE findAllQuery);

    从映射表中删除
        mapTable1_key = ANY(inputIdsToDelete) 和
        mapTable2_key = ANY(outputIdsToDelete);

    SELECT DISTINCT INTO outputIdsToDelete --用未使用的覆盖
        数组(执行 findUnreferencedQuery);

    返回输出IdsToDelete;
结尾;
$身体$
语言 plpgsql 易失性
费用 100;
4

1 回答 1

10

您不能在 SQL 语句中使用 EXECUTE - EXECUTE 只是 plpgsql 语句,因此它不能在 SQL 中 -

EXECUTE string INTO variable
于 2012-05-13T14:23:04.243 回答