【问题标题】:PostgreSQL FUNCTIONS errorPostgreSQL 函数错误
【发布时间】:2015-12-16 18:03:37
【问题描述】:

好的,在大学期间,我正在处理一些 SQL 作业,但我无法弄清楚这里出了什么问题或其他什么……现在坚持了几个小时。

所以我在这里创建一个函数:

CREATE OR REPLACE FUNCTION ins_notitie(pn_patient_nr VARCHAR, pn_notitie_datum DATE, pn_notitie_commentaar VARCHAR, lst_bijwerkdat DATE)
RETURNS void AS
$$
INSERT INTO patient_notitie(pn_patient_nr, pn_notitie_datum, pn_notitie_commentaar, lst_bijwerkdat)
VALUES ($1, $2, $3, $4)
$$
LANGUAGE sql;

然后我尝试插入一个新行:

SELECT ins_notitie('100001', now(), 'Test note', now());

不断收到此错误:

错误:函数 ins_notitie(未知,带时区的时间戳,未知,带时区的时间戳)不存在
第 1 行:SELECT ins_notitie('100001', now(), 'Test note', now());
^
提示:没有函数匹配给定的名称和参数类型。您可能需要添加显式类型转换。
********** 错误 **********

错误:函数 ins_notitie(未知,带时区的时间戳,未知,带时区的时间戳)不存在
SQL 状态:42883
提示:没有函数匹配给定的名称和参数类型。您可能需要添加显式类型转换。
字符:8

正如我在 postgresql 的 GUI 中看到的那样,该函数确实已创建。

【问题讨论】:

    标签: sql postgresql function


    【解决方案1】:

    正如错误所说,它找不到具有您提供的参数类型的函数。 now() 返回 timestamp,而不是 date,并且找不到接受 timestamp 的函数。

    您将能够改为使用now()::date 调用该函数。

    【讨论】:

    • 我的上帝....不敢相信我没有弄明白。哇,伙计,你让我成为了一个快乐的人!
    • @Nerotix: 或者使用current_date 代替 - 返回一个date
    猜你喜欢
    • 2017-12-11
    • 2014-07-26
    • 2015-11-16
    • 2013-01-20
    • 2018-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多