【问题标题】:PostgreSQL Function that updates a specific column of a row更新行的特定列的 PostgreSQL 函数
【发布时间】:2018-07-23 13:38:37
【问题描述】:

我正在尝试创建一个从表中调用特定数据的函数,但为什么它显示的列不存在,即使它在数据库中。

CREATE FUNCTION public."updateDB"(IN userid bigint DEFAULT 00000, OUT uinfo json, IN clname text DEFAULT info)
RETURNS json
LANGUAGE 'plpgsql'
AS $BODY$
BEGIN
    SELECT clname into uinfo 
    FROM public.users 
    WHERE uid = userid;
END;
$BODY$;

但是当我尝试调用它时,它会显示这个error 在这里,我尝试将信息设为默认值,因此会发生此错误。如果我没有做任何默认设置并从代码运行该函数,它会再次显示该错误。

【问题讨论】:

    标签: postgresql sql-function sql-variant


    【解决方案1】:

    你需要引用你的文字,否则 postgres 认为你指的是一个列

    IN clname text DEFAULT 'info'
    

    【讨论】:

    • 我试过了,但是如果我从代码中运行select selectDB("info",23435353335),就会出现这个错误ERROR: column "info" does not exist LINE 1: select selectDB(info,23435353335) ^ SQL state: 42703 Character: 17
    • 'info' 是一个字符串值 "info" 是一个列名。试试selectDB('info',23435353335)。但我不认为这会给你你想要的。结果只会返回'info'
    • 顺便说一句,你的函数被称为updteDB 而不是selectDB
    猜你喜欢
    • 1970-01-01
    • 2017-09-20
    • 1970-01-01
    • 1970-01-01
    • 2021-02-04
    • 1970-01-01
    • 1970-01-01
    • 2021-08-01
    • 2021-09-08
    相关资源
    最近更新 更多