Ir al contenido


Foto

Duda Procedimiento Almacenado no quiere ejecutarse


  • Por favor identifícate para responder
10 respuestas en este tema

#1 arkanimus

arkanimus

    Member

  • Miembros
  • PipPip
  • 31 mensajes

Escrito 14 mayo 2013 - 02:31

Hola no soy muy experto en este tema y me encantaria si me podian ayudar, resulta que tengo el siguiente procedimiento almacenado en mysql, pero no me quiere correr:

create procedure sp_insertaventa(in p_id_pedido int, in p_id_empleado int)
begin

IF not EXISTS  (select venta.id_pedido from venta where venta.id_pedido = p_id_pedido)

INSERT INTO venta (id_pedido,id_empleado) VALUES (p_id_pedido,p_id_empleado)
end if;

END;

me tira el siguiente error:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INSERT INTO venta (id_pedido,id_empleado) VALUES (p_id_pedido,p_id_empleado)
en' at line 6


Saludos!
  • 0

#2 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 14 mayo 2013 - 02:40

prueba de esta manera:




create procedure sp_insertaventa(in p_id_pedido int, in p_id_empleado int)
begin

IF not EXISTS  (select venta.id_pedido from venta where venta.id_pedido = p_id_pedido)

  INSERT INTO venta (id_pedido,id_empleado) VALUES (p_id_pedido,p_id_empleado);
end if;

END;



  • 0

#3 arkanimus

arkanimus

    Member

  • Miembros
  • PipPip
  • 31 mensajes

Escrito 14 mayo 2013 - 02:57

Me tira el siguiente error :/
Imagen Enviada

Saludos!
  • 0

#4 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 14 mayo 2013 - 03:00

prueba con esto



create procedure sp_insertaventa(in p_id_pedido int, in p_id_empleado int)
begin

  IF NOT EXISTS  (select venta.id_pedido from venta where venta.id_pedido = p_id_pedido)  THEN

  INSERT
      INTO venta (id_pedido,id_empleado) VALUES (p_id_pedido,p_id_empleado);

  END IF;

END;

  • 0

#5 arkanimus

arkanimus

    Member

  • Miembros
  • PipPip
  • 31 mensajes

Escrito 14 mayo 2013 - 03:09

Error denuevo  :sad:

Imagen Enviada
  • 0

#6 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 14 mayo 2013 - 03:19

cambiemos el enfoque un poco entonces:



create procedure sp_insertaventa(in p_id_pedido int, in p_id_empleado int)
begin
  DECLARE VI_PEDIDOS INTEGER;

  SELECT COUNT(*) INTO VI_PEDIDOS
      from venta where venta.id_pedido = p_id_pedido;

  IF (VI_PEDIDOS = 0) THEN
      INSERT
          INTO venta (id_pedido,id_empleado)
    VALUES (p_id_pedido,p_id_empleado);
  end if;

END;

  • 0

#7 arkanimus

arkanimus

    Member

  • Miembros
  • PipPip
  • 31 mensajes

Escrito 14 mayo 2013 - 03:28

Denuevo no funciono :/ , Al parecer quizas es error de la sintaxis.. de mysql o no?, gracias por estar ayudandome amigo :)

Imagen Enviada

  • 0

#8 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 14 mayo 2013 - 03:31

El error esta vez es por que estás ejecutando la sentencia desde phpmyadmin como si fuera consulta. Recuerda que un sp es un script no una consulta...
  • 0

#9 arkanimus

arkanimus

    Member

  • Miembros
  • PipPip
  • 31 mensajes

Escrito 14 mayo 2013 - 03:33

El error esta vez es por que estás ejecutando la sentencia desde phpmyadmin como si fuera consulta. Recuerda que un sp es un script no una consulta...


Vale gracias, probare con la pestaña scripts

saludos!
  • 0

#10 arkanimus

arkanimus

    Member

  • Miembros
  • PipPip
  • 31 mensajes

Escrito 14 mayo 2013 - 03:43

Solucionado lo resolvi de la siguiente manera y lo ejecute con mysql workbench en phpmyadmin, no funciono!:
delimiter $$;

CREATE PROCEDURE sp_insertaventa(IN p_id_pedido INT, IN p_id_empleado INT)
BEGIN
  DECLARE VI_PEDIDOS INTEGER;

  SELECT COUNT(*) INTO VI_PEDIDOS
      FROM venta WHERE venta.id_pedido = p_id_pedido;

  IF (VI_PEDIDOS = 0) THEN
      INSERT
          INTO venta (id_pedido,id_empleado)
    VALUES (p_id_pedido,p_id_empleado);
  END IF;

END $$;


Gracias poliburro!

  • 0

#11 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 14 mayo 2013 - 03:53

Gracias poliburro!


No hay de que amigo. Parece que tienes configurado todo para ejecutar consultas, por eso debiste cambiar el delimitador a $$...

que bueno que al final se pudo... saludos
  • 0