LINUX.ORG.RU

История изменений

Исправление 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"

Каков объем пердолинга с синтетической таблией и представлять не нужно…