【发布时间】:2015-05-08 14:52:31
【问题描述】:
快速背景:PostgreSQL 的新手,来自 SQL Server。我正在将存储过程从 SQL Server 转换为 PostgreSQL。我已阅读 Postgres 9.3 文档并查看了大量示例和问题,但仍然找不到解决方案。
我有这个选择语句,我每周执行一次以返回新值
select distinct id, null as charges
, generaldescription as chargedescription, amount as paidamount
from mytable
where id not in (select id from myothertable)
我该怎么做才能把它变成一个我可以每周右键单击并执行的功能。最终,我将使用另一个开发人员构建的程序自动执行此操作。因此它将在没有用户参与的情况下执行,并将结果以电子表格的形式发送给用户。不确定最后一部分是否与函数的编写方式有关。
这是我多次失败的尝试之一:
CREATE FUNCTION newids
RETURNS TABLE (id VARCHAR, charges NUMERIC
, chargedescription VARCHAR, paidamount NUMERIC) AS Results
Begin
SELECT DISTINCT id, NULL AS charges
, generaldescription AS chargedescription, amount AS paidamount
FROM mytable
WHERE id NOT IN (SELECT id FROM myothertable)
END;
$$ LANGUAGE plpgsql;
我也在使用 Navicat,错误是:
必须指定函数结果类型
【问题讨论】:
-
你需要使用
LANGUAGE sql -
使用 Navicat 工具创建函数时仍然收到相同的错误。如果我在查询编辑器窗口中执行命令,它会在 RETURNS 处或附近给我一个语法错误
标签: sql postgresql stored-procedures plpgsql