如何 运行 postgresql 函数(在 运行ning 时看到错误)
How to run postgresql function (seeing error while running)
我这样创建了 Postgresql 函数。并尝试了不同的方法 运行 它如这个问题中提到的那样。 None 的作品。
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';
=====
看到错误: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
在 PostgreSQL 中,双引号内的值被解释为对列的引用而不是字符串文字。因此:
SELECT func_update_count("+", "chris_32");
--pulls values from the column named + and column named chris_32
大概应该是:
SELECT func_update_count('+', 'chris_32');
Seeing error: ERROR: prepared statement "func_update_count" does not exist for below query.
EXECUTE
用于执行准备好的语句,而不是 运行 postgresql 函数。请参阅手册中的 EXECUTE。
您将通过从查询中调用函数来执行函数(根据您的第二次尝试)。
Seeing error: ERROR: column "+" does not exist
双引号 "
用于在标识符中包含空格(例如 "my column"
)或保留大小写(例如 "MyColumn"
)。
见Syntax for Identifiers and Keywords。
单引号 ('
) 可用于字符串文字以及其他样式 - 请参阅手册中的 Constants。
我这样创建了 Postgresql 函数。并尝试了不同的方法 运行 它如这个问题中提到的那样。 None 的作品。
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';
=====
看到错误: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
在 PostgreSQL 中,双引号内的值被解释为对列的引用而不是字符串文字。因此:
SELECT func_update_count("+", "chris_32");
--pulls values from the column named + and column named chris_32
大概应该是:
SELECT func_update_count('+', 'chris_32');
Seeing error: ERROR: prepared statement "func_update_count" does not exist for below query.
EXECUTE
用于执行准备好的语句,而不是 运行 postgresql 函数。请参阅手册中的 EXECUTE。
您将通过从查询中调用函数来执行函数(根据您的第二次尝试)。
Seeing error: ERROR: column "+" does not exist
双引号 "
用于在标识符中包含空格(例如 "my column"
)或保留大小写(例如 "MyColumn"
)。
见Syntax for Identifiers and Keywords。
单引号 ('
) 可用于字符串文字以及其他样式 - 请参阅手册中的 Constants。