我有一个存储过程,用于验证传入变量。如果变量不是'maker'或'member',则应引发错误。如果该变量属于上述两个变量,则应继续正常处理。
以下代码的当前问题是,它总是返回false,因此总是抛出错误,如果变量是'maker','member'或其他变量,则不会出错。
关于我可能错误地看待我的逻辑结构的任何想法吗?
CREATE OR REPLACE FUNCTION validate_creator_type (
"creator_type" VARCHAR(25) -- $1
) RETURNS VOID AS $$
DECLARE
_maker VARCHAR(25) := 'maker';
_member VARCHAR(25) := 'member';
BEGIN
-- Validate the creator type is allowed
IF ($1 <> _maker) OR ($1 <> _member) THEN
RAISE EXCEPTION 'Invalid creator type ---> %', $1
USING HINT = 'The creator type can only be member or maker';
END IF;
END $$
SECURITY DEFINER
LANGUAGE plpgsql;
答案 0 :(得分:0)
将 OR 更改为 AND ,您的问题就应该消失了
CREATE OR REPLACE FUNCTION validate_creator_type (
"creator_type" VARCHAR(25) -- $1
) RETURNS VOID AS $$
DECLARE
_maker VARCHAR(25) := 'maker';
_member VARCHAR(25) := 'member';
BEGIN
-- Validate the creator type is allowed
IF ($1 <> _maker) AND ($1 <> _member) THEN
RAISE EXCEPTION 'Invalid creator type ---> %', $1
USING HINT = 'The creator type can only be member or maker';
END IF;
END $$
SECURITY DEFINER
LANGUAGE plpgsql;