PostgreSQL – Declaración CASE

CASOCASO

    CASE search-expression
       WHEN expression_1 [, expression_2, ...] THEN
          when-statements
      [ ... ]
      [ELSE
          else-statements ]
    END CASE;
    
    

    La expresión-búsqueda es una expresión que se evaluará con la expresión en cada rama WHEN usando el operando de igualdad (=). Si se encuentra una coincidencia, se ejecutan las sentencias when en la rama WHEN correspondiente. Las expresiones subsiguientes debajo no serán evaluadas.

    Las sentencias else en la rama ELSE se ejecutan si no se encuentran coincidencias. La rama ELSE es opcional. Si no se encuentra ninguna coincidencia y no hay una rama ELSE, PostgreSQL generará la excepción  CASE_NOT_FOUND .

    Veamos algunos ejemplos en nuestra base de datos de ejemplo de dvdrental .

    Ejemplo:

    Aquí vamos a get_price_segment p_film_id

    CREATE OR REPLACE FUNCTION get_price_segment(p_film_id integer)
       RETURNS VARCHAR(50) AS $$
    DECLARE 
        rate   NUMERIC;
        price_segment VARCHAR(50);
    BEGIN
          -- get the rate based on film_id
        SELECT INTO rate rental_rate 
        FROM film 
        WHERE film_id = p_film_id;
            
         CASE rate
        WHEN 0.99 THEN
                price_segment = 'Mass';
        WHEN 2.99 THEN
                price_segment = 'Mainstream';
        WHEN 4.99 THEN
                price_segment = 'High End';
        ELSE
            price_segment = 'Unspecified';
        END CASE;
        
       RETURN price_segment;
    END; $$
    LANGUAGE plpgsql;
    
    

    Ahora get_price_segment()

    SELECT get_price_segment(123) AS "Price Segment";
    
    

    Producción:

    Sentencia CASE buscada

    Syntax:
    CASE
        WHEN boolean-expression-1 THEN
          statements
      [ WHEN boolean-expression-2 THEN
          statements
        ... ]
      [ ELSE
          statements ]
    END CASE;
    
    

    La sentencia CASE buscada ejecuta sentencias basadas en el resultado de las expresiones booleanas en cada cláusula WHEN. PostgreSQL evalúa las expresiones booleanas secuencialmente de arriba a abajo hasta que una expresión es verdadera. Luego, la evaluación se detiene y se ejecuta la sentencia correspondiente. El control se pasa a la siguiente declaración después de END CASE.

    En caso de que no se encuentre un resultado verdadero, se ejecutan las declaraciones en la cláusula ELSE. La cláusula ELSE es opcional. Si omite la cláusula ELSE y no hay un resultado verdadero, PostgreSQL generará la excepción  CASE_NOT_FOUND .

    Ejemplo:

    get_customer_service p_customer_id pagoCASE

    CREATE OR REPLACE FUNCTION get_customer_service (p_customer_id INTEGER) 
        RETURNS VARCHAR (25) AS $$ 
    DECLARE
     total_payment NUMERIC ; 
            service_level VARCHAR (25) ;
    BEGIN
     -- get the rate based on film_id
         SELECT
     INTO total_payment SUM (amount)
         FROM
     payment
         WHERE
     customer_id = p_customer_id ; 
      
       CASE
          WHEN total_payment > 200 THEN
             service_level = 'Platinum' ;
          WHEN total_payment > 100 THEN
         service_level = 'Gold' ;
          ELSE
             service_level = 'Silver' ;
       END CASE ;
    
       RETURN service_level ;
    END ; $$ LANGUAGE plpgsql;
    
    

    Ahora probemos la función anterior usando la siguiente declaración:

    SELECT
      148 AS customer,
        get_customer_service (148)
    UNION
    
       SELECT
      178 AS customer,
        get_customer_service (178)
    UNION
       SELECT
      81 AS customer,
        get_customer_service (81);
    
    

    Producción:

    Publicación traducida automáticamente

    Artículo escrito por RajuKumar19 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *