【发布时间】:2014-04-05 12:40:39
【问题描述】:
我知道这是一个简单/愚蠢的问题,但我在这里苦苦挣扎。 . .
正在运行: 安装了 Brew 的 OSX 上的 Postgress 9.3 下面的函数给了我这个
错误: 运算符不存在:字符变化 = 整数
提示:没有运算符匹配给定的名称和参数类型。您可能需要添加显式类型转换。
查询: SELECT substring(address_postal_code for 5) FROM provider_nodes WHERE npi = $1
CONTEXT: PL/pgSQL 函数测试(整数)第 9 行的 EXECUTE 语句
npi_id 在provider_nodes 表中存储为varchar,但它是一个数字。
无论如何,还是我需要更改类型?
CREATE OR REPLACE FUNCTION test(npi_id varchar) RETURNS RECORD AS $$
DECLARE
zip RECORD;
ptlong RECORD;
ptlat RECORD;
result RECORD;
BEGIN
EXECUTE 'SELECT substring(address_postal_code for 5) FROM provider_nodes WHERE npi = $1' INTO zip;
EXECUTE 'SELECT longitude FROM zctas WHERE zcta=$1' INTO ptlong USING zip;
EXECUTE 'SELECT latitude FROM zctas WHERE zcta=$1' INTO ptlat USING zip;
EXECUTE 'SELECT state, zctas FROM zctas WHERE geom && ST_expand(ST_transform(ST_PointFromText("POINT(" || ptlong || " " || ptlat || ")", 4269),32661), 16093) AND ST_distance((ST_transform(ST_PointFromText("POINT(" || ptlong || " " || ptlat || ")", 4269),32661),geom) < 16093' INTO result;
RETURN RESULT;
END;
$$ LANGUAGE plpgsql;
【问题讨论】:
标签: sql dynamic plpgsql execute