微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

数组 – 在PL / pgSQL中创建一个带有动态查询的数组

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

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

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

CREATE OR REPLACE FUNCTION deleteMAPPINGs(
   mapTable1_key text,mapping_table text,mapTable2_key text,table2 text,table2_key text,inputIdsToDelete bigint[]) RETURNS bigint[] AS
$BODY$
DECLARE
    outputIdsToDelete bigint[];
    findAllQuery text;
    findUnreferencedQuery text;
    BEGIN
    findAllQuery := 'SELECT disTINCT ' || mapTable2_key ||
        ' FROM '  || mapping_table ||
        ' WHERE ' || mapTable1_key || ' = ANY(inputIdsToDelete)';
    findUnreferencedQuery := 'SELECT disTINCT ' || table2_key || --find unused
        ' FROM ' || table2 ||
        ' WHERE ' || table2_key || ' NOT IN (' ||
            'SELECT disTINCT ' || mapTable2_key || --all used
            ' 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 --overwrite with unused
        ARRAY(EXECUTE findUnreferencedQuery);

    RETURN outputIdsToDelete;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;

解决方法

你不能在sql语句中使用EXECUTE – EXECUTE只是plpgsql语句,所以它不能在sql里面 –

EXECUTE string INTO variable

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐