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

标签 postgresql plpgsql

我这样创建了 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/

相关文章:

postgresql - Postgres FOR LOOP 语法错误

postgresql - PostgresQL 中的参数嗅探/绑定(bind)查看

sql - 如何在postgresql中对两列求和?

sql - 'AS'在SQL中是什么意思?

java - 处理 PostgreSQL %ROWTYPE 返回

sql - 通用集合返回函数

ruby-on-rails - Rails 删除父模型,但仍然访问子模型

sql - 如何从名称源自另一个表的表中选择值?

postgresql - 如何编写不返回任何内容的 postgres 存储过程?

sql - 如何从postgres的文本列中获取第n行