【发布时间】:2013-07-04 09:46:47
【问题描述】:
我已经实现了一个函数来检查一个值是否出现在特定表的特定行中:
CREATE FUNCTION check_if_if_exist(id INTEGER, table_name character(50), table_column character(20) ) RETURNS BOOLEAN AS $$
DECLARE res BOOLEAN;
BEGIN
SELECT table_column INTO res
FROM table_name
WHERE table_column = id;
RETURN res;
END;
$$ LANGUAGE plpgsql
我已经创建并填写了一个简单的测试表来尝试这个功能:
CREATE TABLE tab(f INTEGER);
我像这样调用函数
SELECT check_if_exist(10, tab, f);
但是我出现了这个错误:
ERROR: column "prova" does not exist
LINE 1: SELECT check_if_exist(10, tab, f);
^
********** Error **********
ERROR: column "tab" does not exist
SQL state: 42703
Character: 27
为什么?
【问题讨论】:
-
如果您尝试将其作为“如果不存在则插入”或“更新,如果不存在则插入”类型的事情的一部分,请立即停止并阅读有关 PostgreSQL 上的 upsert 的信息。如果这不是你正在做的,也许编辑并解释你的真正目标是什么,因为很难想象这样的功能在没有更好的方法的情况下会有用。
标签: sql postgresql stored-procedures stored-functions