邮政系统 |带 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;
我有一个用于验证传入变量的存储过程。如果变量不是 '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;