MySQL - ¿Hacer referencia a un parámetro?

 
Vista:
sin imagen de perfil

¿Hacer referencia a un parámetro?

Publicado por Jorge (3 intervenciones) el 08/05/2016 19:03:48
Quiero pasar de una tabla a otra en caso de que el registro que se quiere insertar esté en la otra, pero no logro averigüar qué falla.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
DELIMITER //
 
CREATE PROCEDURE darDeAltaDemandante(dni CHAR(9), nombre VARCHAR(40), apellido1 VARCHAR(40), apellido2 VARCHAR(40), direccion VARCHAR(100), email VARCHAR(320), fechaNacimiento DATE, consideraciones VARCHAR(100))
 
BEGIN
 
    DECLARE existsUser;
 
    SELECT COUNT(*) FROM antiguosDemandantes WHERE antiguosDemandantes.dni = dni INTO existsUser;
 
    IF existsUser = 0 THEN
 
        INSERT INTO demandantes(`dni`, `nombre`, `apellido1`, `apellido2`, `direccion`, `email`, `fechaNacimiento`, `consideraciones`) VALUES(dni, nombre, apellido1, apellido2, direccion, email, fechaNacimiento);
 
    ELSE
 
        INSERT INTO demandantes SELECT dni, nombre, apellido1, apellido2, direccion, email, fechaNacimiento, consideraciones FROM antiguosDemandantes;
 
        DELETE FROM antiguosDemandantes WHERE antiguosDemandantes.dni = dni;
 
    END IF;
 
END; //
 
DELIMITER ;
Aquí dejo el código del error:

1
2
3
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ';

    SELECT COUNT(*) FROM antiguosDemandantes WHERE antiguosDemandantes.dni = d' at line 3

Creo que es porque no hace referencia bien al parámetro dni, ¿cómo se debe hacer?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

¿Hacer referencia a un parámetro?

Publicado por DAVID (63 intervenciones) el 09/05/2016 12:59:40
como te he puesto en otro post, pon un alias a la tabla:
1
2
3
4
5
6
delimiter //
create procedure foo( id int )
begin
 select * from users u where u.id = id;
end
//

Un saludo,
David
soluciones web
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 20
Ha disminuido su posición en 25 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

¿Hacer referencia a un parámetro?

Publicado por Gonzalo (103 intervenciones) el 09/05/2016 13:28:28
Por lo pronto, no estás declarando el tipo de dato de la variable...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
DELIMITER //
 
CREATE PROCEDURE darDeAltaDemandante(dni CHAR(9), nombre VARCHAR(40), apellido1 VARCHAR(40), apellido2 VARCHAR(40), direccion VARCHAR(100), email VARCHAR(320), fechaNacimiento DATE, consideraciones VARCHAR(100))
 
BEGIN
 
    DECLARE existsUser CHAR(9);
    SELECT COUNT(*) FROM antiguosDemandantes WHERE antiguosDemandantes.dni = dni INTO existsUser;
    IF existsUser = 0 THEN
        INSERT INTO demandantes(`dni`, `nombre`, `apellido1`, `apellido2`, `direccion`, `email`, `fechaNacimiento`, `consideraciones`) VALUES(dni, nombre, apellido1, apellido2, direccion, email, fechaNacimiento);
    ELSE
        INSERT INTO demandantes SELECT dni, nombre, apellido1, apellido2, direccion, email, fechaNacimiento, consideraciones FROM antiguosDemandantes;
       DELETE FROM antiguosDemandantes WHERE antiguosDemandantes.dni = dni;
    END IF;
 
END; //
 
DELIMITER ;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar