gpt4 book ai didi

postgresql - 如何在postgresql函数中传递数组

转载 作者:行者123 更新时间:2023-11-29 13:19:49 26 4
gpt4 key购买 nike

我试图在 pg 函数中传递一个文本数组,但我遇到了不同的错误,请帮助我如何传递一个具有不同数据类型的数组,如文本和整数....我的代码在这里

CREATE or replace FUNCTION get_data(text[])
RETURNS TABLE(sheet_no text,type text,road_name text,lon text,lat text)
AS $$
DECLARE
sql text;
BEGIN
sql ='set session "myapp.user" ='||$1;
execute sql;

update tbl_encroachment
set landuse = $2
where tbl_encroachment.unique_land_parcel_no = $3
and tbl_encroachment.parcel_sub_division = $4;

RETURN QUERY
select foo.sheet_no,foo.type,foo.road_name,foo.lon,foo.lat
from tbl_encroachment as foo
where foo.unique_land_parcel_no = $3
and foo.parcel_sub_division = $4;
RETURN;

end
$$ LANGUAGE plpgsql;

--execute query
select sheet_no,type,road_name,lon,lat from get_data('{7,hasilpur,7-35-251-0001_1-1-9-SUK_001,9}'::text[])

最佳答案

您不能像那样访问数组元素。 $1 表示整个数组,因此您需要执行类似 $1[1], $1[2], $1[3] 的操作,而不是 $1, $2, $3

那么试试这个:

CREATE or replace FUNCTION get_data(text[])
RETURNS TABLE(sheet_no text,type text,road_name text,lon text,lat text)
AS $$
DECLARE
sql text;
BEGIN
sql ='set session "myapp.user" ='||$1[1];
execute sql;

update tbl_encroachment
set landuse = $1[2]
where tbl_encroachment.unique_land_parcel_no = $1[3]
and tbl_encroachment.parcel_sub_division = $1[4];

RETURN QUERY
select foo.sheet_no,foo.type,foo.road_name,foo.lon,foo.lat
from tbl_encroachment as foo
where foo.unique_land_parcel_no = $1[3]
and foo.parcel_sub_division = $1[4];
RETURN;

end
$$ LANGUAGE plpgsql;

关于postgresql - 如何在postgresql函数中传递数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44023279/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com