PostgreSQL:将动态ARRAY插入函数中

时间:2017-03-17 13:30:35

标签: arrays postgresql postgis dijkstra

我试图将一系列值作为数组插入到可以定义数组的函数中。数组值来自另一个SQL函数,该函数提供了我想在进程函数中使用的值的表,这是pgr_dijkstra ONE到MANY选项,需要一个数组。

该功能如何正常工作:

SELECT * 
FROM pgr_dijkstra('SELECT id,source,target,cost FROM my_table', start_id, ARRAY(1,2,3,4));

如果我尝试将此数组插入其中,我大致认为该函数应该有效,但是并没有

SELECT foo.* 
FROM (SELECT ARRAY(SELECT DISTINCT id::integer 
                   FROM (bla bla) AS ARRAY_QUERY, 
     pgr_dijkstra('SELECT id, source,target,cost FROM my_table', start_id, ARRAY_QUERY) AS foo;

因为这只能给出:

ERROR:  function pgr_dijkstra(unknown, integer, record, boolean) does not exist

并且数组是作为整数而不是记录创建的,因此不确定为什么会发生这种情况。

可能是因为即使在阅读了有关该主题的文档以及如何将值从一个查询实现到另一个查询中需要作为数组输入之后,我还不完全理解数组如何在postgresql中工作。希望有一个解决方法,或者只是我在实现这一点时错过的一些步骤。

解决:https://stackoverflow.com/a/42859060/7056396

1 个答案:

答案 0 :(得分:1)

select * 
from pgr_dijkstra(
    'select id,source,target,cost from my_table',
    start_id,
    array(select distinct id::integer from (bla bla))
);