PL/PgSQL:RETURNS TABLE 输出以逗号分隔,没有值
以下 PL/pgSQl 脚本返回正确的行数,但输出是括号中的逗号分隔值列表,如下所示:
(,,) (,,) (,,) (,,) (,,) 。 。 (,,)
CREATE OR REPLACE FUNCTION Get_Airports_in_Country(countryCode TEXT)
RETURNS TABLE(gid int, iko text, name text) AS $$
DECLARE
cntry_geom cntry02.the_geom%TYPE;
BEGIN
SELECT the_geom INTO cntry_geom from cntry02 where iso_2digit = $1;
RETURN QUERY
SELECT gid, iko, name
FROM airport
WHERE ST_Within(the_geom, cntry_geom);
END;
$$
LANGUAGE plpgsql;
SELECT Get_Airports_in_Country('CA');
我使用的是 PostgreSQL 8.4。
知道我在这里缺少什么吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
它可能看起来像这样:
调用:
要点: 无论如何,
gid
、iko
、namereuse
作为 OUT 参数时(在RETURNS TABLE
..),您必须在函数体中限定相同的列名称。 ->a.gid、a.iko、a.name
。 PostgreSQL 9.1 对这些东西更加严格并且会抛出错误。本来可以帮助你,但你运行在 8.4 上。DO
语句,在 PostgreSQL 9.0 中引入。It might look like this:
Call:
Major points:
gid
,iko
,namereuse
as OUT parameters (in theRETURNS TABLE
..), you have to qualify the identical column names in the function body. ->a.gid, a.iko, a.name
. PostgreSQL 9.1 is stricter about that stuff and throws errors. Would have helped you, but you run on 8.4.DO
statement, introduced in PostgreSQL 9.0.你应该使用不同的查询
you should to use a different query