我像这样创建了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';
试图执行这样的功能:
Runs successfully:
UPDATE user_account SET tptcount = tptcount + 1 WHERE useridcode = 'chris_32';
=====
查看错误: ERROR: prepared statement "func_update_count" does not exist
以查询以下内容 .
EXECUTE func_update_count("+", "chris_32"); -- Does not work
=====
查看错误: ERROR: column "+" does not exist LINE 1: SELECT func_update_count("+", "chris_32"); -- Does not work
以查询以下内容
SELECT func_update_count("+", "chris_32"); -- Does not work
2 回答
EXECUTE
用于执行预准备语句,而不是运行postgresql函数 . 请参阅手册中的EXECUTE .您可以通过从查询中调用它来执行函数(根据您的第二次尝试) .
双引号
"
用于引用标识符(如果它们中包含空格(例如"my column"
)),或用于保留大小写(例如"MyColumn"
) .见Syntax for Identifiers and Keywords .
单引号(
'
)可用于字符串文字以及其他样式 - 请参阅手册中的Constants .在PostgreSQL中,双引号内的值被解释为对列的引用而不是字符串文字 . 从而:
应该是: