我这样创建了 Postgresql 函数。并按照这个问题中提到的尝试不同的方式来运行它。没有作品。
CREATE OR REPLACE FUNCTION func_update_count(
updateType text,
userid text
)
RETURNS integer AS $$
DECLARE
_qry char(1024);
l_rows integer;
BEGIN
RAISE NOTICE 'Running ++';
IF updateType = '+' THEN
RAISE NOTICE 'Running ++';
UPDATE user_account SET tptcount = tptcount + 1 WHERE useridcode = '@userid';
ELSIF updateTYpe = '-' THEN
RAISE NOTICE 'Running --';
UPDATE user_account SET tptcount = tptcount - 1 WHERE useridcode = '@userid';
ELSE
RAISE NOTICE 'Not running any';
END IF;
GET DIAGNOSTICS l_rows = ROW_COUNT;
RETURN l_rows;
END;
$$
LANGUAGE 'plpgsql';
尝试执行这样的功能:
运行成功:
UPDATE user_account SET tptcount = tptcount + 1 WHERE useridcode = 'chris_32';
=====
看到错误:错误:准备好的语句“func_update_count”不存在
以下查询。
EXECUTE func_update_count("+", "chris_32"); -- Does not work
=====
看到错误:错误:列“+”不存在
第 1 行:选择 func_update_count("+", "chris_32"); -- 对下面的查询不起作用
SELECT func_update_count("+", "chris_32"); -- Does not work
最佳答案
在 PostgreSQL 中,双引号内的值被解释为对列的引用而不是字符串文字。因此:
SELECT func_update_count("+", "chris_32");
--pulls values from the column named + and column named chris_32
应该是:
SELECT func_update_count('+', 'chris_32');
关于postgresql - 如何运行postgresql函数(运行时看到错误),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53697255/