SQL - ¿Cómo hago referencia a un parámetro que se llama igual que un registro?

 
Vista:
sin imagen de perfil

¿Cómo hago referencia a un parámetro que se llama igual que un registro?

Publicado por Jorge (1 intervención) el 08/05/2016 18:40:58
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
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
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

¿Cómo hago referencia a un parámetro que se llama igual que un registro?

Publicado por DAVID (23 intervenciones) el 09/05/2016 12:54:17
Hola buenas,
Que Gestor de base de datos estas usando? MySql, no?
Ponle un alias a la tabla tipo esto:
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