2
respuestas

[Duda] Como haria en la mismo STORED PROCEDURE para adicionar el nombre del producto?

¿Como haria en la mismo STORED PROCEDURE para adicionar el nombre del producto? Se puede colocar el atributo en la misma linea SELECT INTO, o se debe hacer otro SELECT?

CREATE DEFINER=`root`@`localhost` PROCEDURE `estado_precio_producto`(vcodigo varchar(20))
BEGIN
    declare vres varchar(40);
    declare vprecio float;
    SELECT PRECIO_DE_LISTA INTO vprecio FROM tabla_de_productos 
    WHERE CODIGO_DEL_PRODUCTO = vcodigo;
    SET vres = "Barato";
    IF (vprecio>=12) THEN
       SET vres = "Costoso";
    ELSEIF (vprecio>7 AND vprecio<12 ) THEN
        SET vres = "Ascequible";
    END IF;
    SELECT CONCAT("Estado precio producto ", vcodigo, " Valor ", vprecio, " ES ", vres) as ESTADO;
END
2 respuestas

¡Hola Rene!

En el stored procedure que has compartido, puedes agregar el nombre del producto en la misma línea del SELECT INTO. No es necesario hacer otro SELECT. Aquí te muestro cómo quedaría el código:

CREATE DEFINER=`root`@`localhost` PROCEDURE `estado_precio_producto`(vcodigo varchar(20))
BEGIN
    declare vres varchar(40);
    declare vprecio float;
    declare vnombre varchar(100); -- Agregamos la variable para el nombre del producto
    SELECT PRECIO_DE_LISTA, NOMBRE_DEL_PRODUCTO INTO vprecio, vnombre FROM tabla_de_productos 
    WHERE CODIGO_DEL_PRODUCTO = vcodigo;
    SET vres = "Barato";
    IF (vprecio>=12) THEN
       SET vres = "Costoso";
    ELSEIF (vprecio>7 AND vprecio<12 ) THEN
        SET vres = "Asequible";
    END IF;
    SELECT CONCAT("Estado precio producto ", vcodigo, " Valor ", vprecio, " ES ", vres, " - Nombre del producto: ", vnombre) as ESTADO;
END

Ahora, cuando llames al stored procedure estado_precio_producto, además de proporcionar el código del producto, también obtendrás el nombre del producto en el resultado.

Espero que esto resuelva tu duda. Si tienes alguna otra pregunta, no dudes en preguntar. Buenos estudios! :D

Si este post te ayudó, por favor, marca como solucionado ✓.

Buena tarde, Muchas gracias, Erika. Rene Avila A.