I know this is a simple/foolish question, but I am struggling here . . .
Running: Postgress 9.3 on OSX installed with Brew Function below gives me this
ERROR: operator does not exist: character varying = integer
HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.
QUERY: SELECT substring(address_postal_code for 5) FROM provider_nodes WHERE npi = $1
CONTEXT: PL/pgSQL function test(integer) line 9 at EXECUTE statement
npi_id is stored as varchar in provider_nodes table but is a number.
Anyway around this or do I need to change the type?
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;