如何运行postgresql函数(运行时出现错误)



我创建了这样的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'; 

=====

以下查询出现错误: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'); 

看到错误:错误:下面的查询不存在准备好的语句"func_update_count"。

EXECUTE用于执行准备好的语句,而不是运行postgresql函数。请参阅手册中的EXECUTE。

您可以通过从查询中调用函数来执行该函数(根据您的第二次尝试(。

看到错误:错误:列"+"不存在

如果标识符中有空格(例如"my column"(,则使用双引号"对标识符进行引号引用,或保留大小写(例如"MyColumn"(。

请参阅标识符和关键字的语法。

单引号('(可以用于字符串文字以及其他样式-请参阅手册中的常量。

相关内容

最新更新