PostgreSQL:将动态 ARRAY 插入函数
PostgreSQL: Insert dynamic ARRAY into functions
我正在尝试将一系列值作为数组插入到可以定义数组的函数中。数组值来自另一个 SQL 函数,它给出了我想在后续函数中使用的值的 table,这是需要数组的 pgr_dijkstra ONE to 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 中的工作方式,即使在阅读了有关该主题的文档以及如何将一个查询中的值实现到另一个查询中需要它们作为数组输入的情况下也是如此。希望有一个解决方法,或者只是我在正确实施时错过的一些步骤。
已解决:
select *
from pgr_dijkstra(
'select id,source,target,cost from my_table',
start_id,
array(select distinct id::integer from (bla bla))
);
我正在尝试将一系列值作为数组插入到可以定义数组的函数中。数组值来自另一个 SQL 函数,它给出了我想在后续函数中使用的值的 table,这是需要数组的 pgr_dijkstra ONE to 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 中的工作方式,即使在阅读了有关该主题的文档以及如何将一个查询中的值实现到另一个查询中需要它们作为数组输入的情况下也是如此。希望有一个解决方法,或者只是我在正确实施时错过的一些步骤。
已解决:
select *
from pgr_dijkstra(
'select id,source,target,cost from my_table',
start_id,
array(select distinct id::integer from (bla bla))
);