首页 文章

如何运行postgresql函数(运行时看到错误)

提问于
浏览
0

我像这样创建了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 回答

  • 1

    看到错误:错误:下面的查询不存在预处理语句“func_update_count” .

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

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

    看到错误:错误:列“”不存在

    双引号 " 用于引用标识符(如果它们中包含空格(例如 "my column" )),或用于保留大小写(例如 "MyColumn" ) .

    Syntax for Identifiers and Keywords .

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

  • 0

    在PostgreSQL中,双引号内的值被解释为对列的引用而不是字符串文字 . 从而:

    SELECT func_update_count("+", "chris_32"); 
     --pulls values from the column named + and column named chris_32
    

    应该是:

    SELECT func_update_count('+', 'chris_32');
    

相关问题