Postgresql 函数中导致问题的参数

Postgresql 函数中导致问题的参数,postgresql,function,postgis,Postgresql,Function,Postgis,我有一些代码,它返回一个多边形作为驱动时间: 选择ST_setRidst_MakePolygonST_AddPointfoo.openline、ST_StartPointfoo.openline、4326作为几何体 从…起 选择ST_Makelinepoints ORDER BY id作为openline 从…起 选择行号作为id,ST\U MakePointx,y作为点 来自pgr_alphashape' 挑选* 从UKRoads.node作为节点 参加 从pgr_drivingDistanc

我有一些代码,它返回一个多边形作为驱动时间:

选择ST_setRidst_MakePolygonST_AddPointfoo.openline、ST_StartPointfoo.openline、4326作为几何体 从…起 选择ST_Makelinepoints ORDER BY id作为openline 从…起 选择行号作为id,ST\U MakePointx,y作为点 来自pgr_alphashape' 挑选* 从UKRoads.node作为节点 参加 从pgr_drivingDistance中选择* 选择id, source::int4作为源, target::int4作为目标, 成本:浮动8作为成本, 成本:浮动8作为反向成本 从public.hh_2po_4pgr, 1946600, 10, 错误的 错误为node.id=dd.id1':text上的dd 作为一个 作为foo; 这已经过测试,并且有效。 我试图将其封装在一个函数中,并传递参数来替换1946600和10的值

该函数如下所示:

创建或替换函数usp\U walkingrangesource integer,walkingtime integer返回几何体 语言plpgsql 作为$$ 声明 重新排列几何体:=null; 开始 选择ST_setRidst_MakePolygonST_AddPointfoo.openline、ST_StartPointfoo.openline、4326作为几何体 重新安排 从…起 选择ST_Makelinepoints ORDER BY id作为openline 从…起 选择行号作为id,ST\U MakePointx,y作为点 来自pgr_alphashape' 挑选* 从UKRoads.node作为节点 参加 从pgr_drivingDistance中选择* 选择id, source::int4作为源, target::int4作为目标, 成本:浮动8作为成本, 成本:浮动8作为反向成本 从public.hh_2po_4pgr, 来源 步行时间, 错误的 错误为node.id=dd.id1':text上的dd 作为一个 作为foo; 返程再培训; 终止 $$ 但是它不起作用

如果我用硬编码的值替换源和行走时间的参数,那么函数可以工作


我读过一些关于必须将其转换为execute语句的内容,但是有人能给我指出正确的方向吗?

查询是一个字符串,因此需要设置占位符,然后从变量中设置值。您将对%s使用以下格式:

[...] 来自pgr_alphashapeformat' 挑选* 从UKRoads.node作为节点 参加 从pgr_drivingDistance中选择* 选择id, source::int4作为源, target::int4作为目标, 成本:浮动8作为成本, 成本:浮动8作为反向成本 从public.hh_2po_4pgr, %s, %s, 错误的 假为node.id=dd.id1'上的dd,源,walkingtime::text