Resultados 1 al 4 de 4

Tema: Funcion en Postgre usando CASE

  1. #1

    Predeterminado Funcion en Postgre usando CASE

    Buenas, estoy intentando hacer una función que me cuente el número de clientes de una base de datos y me devuelva un texto según cuantos clientes tenga.
    Esto es lo que estoy probando y me da error por todos lados...

    Función CASE:

    Código PHP:
    CREATE OR REPLACE FUNCTION F_clientes_case() returns varchar as $$
    DECLARE
     
    n_clientes numeric;
     
    mensaje varchar
    BEGIN
     
    CASE
     
    n_clientes = (select count(clienteidfrom clientes)
     
     
     
    WHEN n_clientes =>10 THEN
      mensaje 
    ='Hay más de 10 clientes';
     
    WHEN (n_clientes =<10THEN
      mensaje 
    ='Hay menos de 10 clientes';
     
    WHEN (n_clientes =10THEN
      mensaje 
    ='Hay 10 clientes'
       
     
    END CASE;
      
      RETURN 
    mensaje
     
    END;
    $$ 
    language 'plpgsql';
    select F_clientes_case(); 
    He podido hacer otro similar usando IF que funciona sin problema, pero con CASE no termino de verlo

    Función IF:

    Código PHP:
    CREATE OR REPLACE FUNCTION f_mensaje_productos_if() returns varchar as $$
    DECLARE
     
    n_productos numeric;
     
    mensaje varchar
    BEGIN
     n_productos 
    = (select count(productoidfrom productos);
     IF (
    n_productos =12THEN
      mensaje
    ='Hay 12 productos o más';
      ELSE
       
    mensaje='Hay menos de 12 productos';
      
    END IF;
      
      RETURN 
    mensaje
     
    END;
    $$ 
    language 'plpgsql';
    select F_mensaje_productos_if(); 
    Saludos y gracias.

  2. #2

    Predeterminado Re: Funcion en Postgre usando CASE

    Hace tiempo que no toco PGSQL, pero si pones los errores que te da, quizás podamos ayudarte.

  3. #3

    Predeterminado Re: Funcion en Postgre usando CASE

    Cita Iniciado por jgutierrez Ver mensaje
    Hace tiempo que no toco PGSQL, pero si pones los errores que te da, quizás podamos ayudarte.
    Gracias por tu interés jgutierrez finalmente he conseguido encontrar el fallo. Pongo el código


    Código PHP:
    CREATE OR REPLACE FUNCTION F_clientes_case() returns varchar as $$
    DECLARE
     
    n_clientes numeric;
     
    mensaje varchar
    BEGIN
     
     n_clientes 
    = (select count(clienteidfrom clientes);
     
       CASE
     
     
    WHEN n_clientes >=10 THEN
      mensaje 
    ='Hay más de 10 clientes';
     
    WHEN (n_clientes <=10THEN
      mensaje 
    ='Hay menos de 10 clientes';
     
    WHEN (n_clientes =10THEN
      mensaje 
    ='Hay 10 clientes'
       
     
    END CASE;
      
      RETURN 
    mensaje
     
    END;
    $$ 
    language 'plpgsql';
    select F_clientes_case(); 
    El problema estaba donde empezaba el case y en los símbolos de mayor y menor, que van delante del igual
    Última edición por nivea; 17/01/2019 a las 10:59

  4. #4

    Predeterminado Re: Funcion en Postgre usando CASE

    Muchas gracias por compartir la solución!

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •