【发布时间】:2020-03-24 03:21:32
【问题描述】:
我正在尝试创建一个函数,该函数添加一条以给定变量作为值的记录。我的代码:
CREATE OR REPLACE FUNCTION ADD_FILM(id INTEGER, t VARCHAR, y INTEGER, p REAL) RETURNS VARCHAR AS $$
DECLARE
query VARCHAR;
BEGIN
query = 'insert into films (id_film, title, year_production, price) values ('||id||','||t||','||y||','||p||')';
EXECUTE query;
RETURN 'OK';
EXCEPTION
WHEN UNIQUE_VIOLATION THEN
RAISE NOTICE 'Incorrect ID, next available ID set';
RETURN 0;
END;
$$ LANGUAGE PLPGSQL;
SELECT ADD_FILM(1,'aaa','2020','10');
以下函数执行以错误结束。语法有什么问题?
错误:列“aaa”不存在
【问题讨论】:
-
我不确定 Postgres 如何对函数中的错误参数做出反应,但您尝试将 '2020' string 作为
y INTEGER参数和 '10' 字符串为p REAL。然后将id, t, y, p作为 strings 插入(因为'||id||'语法告诉生成一个字符串值)在一个表中,该表可能具有列id_film、year_production和@987654328 的数字类型@ -
哦,您可能不允许在
'值的末尾和查询字符串内使用单引号' -
看起来我的方法太复杂了,而且有更简单的选择 :D 但是感谢您的帮助
标签: sql postgresql plpgsql