邮政系统 |带 OR 条件的 IF 语句

Postgres | IF statement with OR conditional

我有一个用于验证传入变量的存储过程。如果变量不是 'maker' 或 'member',那么它应该抛出一个错误。如果是上述两种变量,则继续正常处理。

下面代码的当前问题是它总是 returns false,因此总是抛出错误,不管变量是 'maker'、'member' 还是其他什么否则。

关于我可能在哪里错误地查看我的逻辑结构的任何想法?

CREATE OR REPLACE FUNCTION validate_creator_type (
  "creator_type" VARCHAR(25)         -- 
) RETURNS VOID AS $$
DECLARE
  _maker VARCHAR(25) := 'maker';
  _member VARCHAR(25) := 'member';
BEGIN

  -- Validate the creator type is allowed
  IF ( <> _maker) OR ( <> _member) THEN
    RAISE EXCEPTION 'Invalid creator type ---> %', 
      USING HINT = 'The creator type can only be member or maker';
  END IF;

END $$
SECURITY DEFINER
LANGUAGE plpgsql;

OR 更改为 AND,您的问题应该消失了

    CREATE OR REPLACE FUNCTION validate_creator_type (
      "creator_type" VARCHAR(25)         -- 
    ) RETURNS VOID AS $$
    DECLARE
      _maker VARCHAR(25) := 'maker';
      _member VARCHAR(25) := 'member';
    BEGIN

      -- Validate the creator type is allowed
      IF ( <> _maker) AND ( <> _member) THEN
        RAISE EXCEPTION 'Invalid creator type ---> %', 
          USING HINT = 'The creator type can only be member or maker';
      END IF;

    END $$
    SECURITY DEFINER
    LANGUAGE plpgsql;