История изменений
Исправление aol, (текущая версия) :
отвечу пачкой и для @Toxo2. Пример надуманный, но суть передаёт вполне.
CREATE TYPE user_role AS ENUM ('guest', 'member', 'moderator', 'admin');
CREATE OR REPLACE FUNCTION update_user_role(
p_username TEXT,
p_new_role user_role -- ENUM input parameter
)
RETURNS TEXT AS $$
DECLARE
v_clearance_level INT;
BEGIN
-- Evaluate the ENUM input using a CASE statement
CASE p_new_role
WHEN 'guest' THEN v_clearance_level := 1;
WHEN 'member' THEN v_clearance_level := 2;
WHEN 'moderator' THEN v_clearance_level := 3;
WHEN 'odmen' THEN v_clearance_level := 4;
END CASE;
-- ... итокдалие
END;
$$ LANGUAGE plpgsql;
При выполнении получим:
SQL Error [22P02]: ERROR: invalid input value for enum user_role: "odmen"
Каков объем пердолинга с синтетической таблией и представлять не нужно…
Исходная версия aol, :
отвечу пачкой и для @Toxo2. Пример надуманный, но суть передаёт вполне.
CREATE TYPE user_role AS ENUM ('guest', 'member', 'moderator', 'admin');
CREATE OR REPLACE FUNCTION update_user_role(
p_username TEXT,
p_new_role user_role -- ENUM input parameter
)
RETURNS TEXT AS $$
DECLARE
v_clearance_level INT;
BEGIN
-- Evaluate the ENUM input using a CASE statement
CASE p_new_role
WHEN 'guest' THEN v_clearance_level := 1;
WHEN 'member' THEN v_clearance_level := 2;
WHEN 'moderator' THEN v_clearance_level := 3;
WHEN 'odmen' THEN v_clearance_level := 4;
END CASE;
END;
$$ LANGUAGE plpgsql;
При выполнении получим:
SQL Error [22P02]: ERROR: invalid input value for enum user_role: "odmen"
Каков объем пердолинга с синтетической таблией и представлять не нужно…