【问题标题】:PostgreSQL IF NOT EXISTS return expressionPostgreSQL IF NOT EXISTS 返回表达式
【发布时间】:2021-10-21 18:37:17
【问题描述】:

我想使用 IF NOT EXISTS 检查表中是否不存在记录。如果表中不存在该记录,则返回以下内容:

Success Message
0 'No ID exists'

到目前为止我有这个代码:

do $$
declare 
begin 
    if not exists (Select 1 from user.permission where permission_id = 1) then 
    0 as Success, 'No ID exists' as message;
    end if;
end $$

我收到“错误:在“0”或附近的语法错误”的错误

我正在使用 IF 语句,因为我只想在记录不存在时返回任何内容,否则它会移至文件中的下一个查询(即,如果条件不存在,我不希望它返回 NULL遇见)

【问题讨论】:

  • 这似乎更适合case;另外,如果相反,你想返回什么?
  • @ps2goat 如果表中有匹配则不需要返回任何内容,只需要移动到下一个查询(不包含在本文中)
  • 这是一个函数/存储过程还是只是一个标准脚本?
  • @ps2goat 一个标准脚本

标签: sql postgresql


【解决方案1】:

如果您的 plpgsql 函数返回单个记录,则添加 THEN 语句 RETURN SELECT 或如果您的 plpgsql 函数返回一组记录,则添加 RETURN QUERY SELECT 可能有用,请参阅文档 here

create or replace your_function(your_list_of_parameters)
returns record language plpgsql as
$$
declare 
begin 
    if not exists (Select 1 from user.permission where permission_id = 1) then 
    return select 0 as Success, 'No ID exists' as message;
    end if;
end ; $$

create or replace your_function(your_list_of_parameters)
returns setof record language plpgsql as
$$
declare 
begin 
    if not exists (Select 1 from user.permission where permission_id = 1) then 
    return query select 0 as Success, 'No ID exists' as message;
    end if;
end ; $$

【讨论】:

    猜你喜欢
    • 2013-08-25
    • 2012-07-17
    • 1970-01-01
    • 2013-12-13
    • 2018-11-06
    • 2014-11-27
    • 1970-01-01
    • 2012-06-29
    • 2011-11-15
    相关资源
    最近更新 更多