Hola ferminako:
La sintaxis del IF que estás buscando es diferente a la que se utiliza en el Select.
http://dev.mysql.com/doc/refman/5.0/...onstructs.html
Hay varios detalles en lo que estás intentando hacer, creo que es conveniente que le des una revisada a la documentación de MySQL, pues la sintaxis no es tan semejante a la de SQL Server por ejemplo. Vayamos por partes:
1. No es recomendable que tus parámetros se llamen igual que tus campos.
2. Evita en lo posible el uso de palabras en inglés (PASSWORD)
3. En MySQL, para colocar el resultado de un SELECT en una variable utilizas INTO:
http://dev.mysql.com/doc/refman/5.0/...statement.html
Para el ejemplo voy a suponer que tienes una tabla más o menos así;
Código MySQL:
Ver originalQuery OK, 0 rows affected (0.10 sec)
Query OK, 1 row affected (0.03 sec)
+----+-------+-------------+-------+--------+-----------+
| id | login | contrasenia | nivel | nombre | apellidos |
+----+-------+-------------+-------+--------+-----------+
| 1 | uno | uno | 1 | Uno | Unico |
+----+-------+-------------+-------+--------+-----------+
Ahora bien, el SP que intentas hacer quedaría más o menos así:
Código:
DELIMITER $$
DROP PROCEDURE IF EXISTS `Ins_Usuario`$$
CREATE PROCEDURE Ins_Usuario(OUT Res INT,
IN in_login VARCHAR(45),
IN in_contrasenia VARCHAR(45),
IN in_nivel INT,
IN in_nombre VARCHAR(45),
IN in_apellido VARCHAR(100)
)
BEGIN
DECLARE existe INT;
SET existe = 0;
SELECT COUNT(id) INTO existe FROM usuarios WHERE login = in_login;
IF (existe > 0) THEN
SET res = 1;
ELSE
INSERT INTO usuarios VALUES (NULL, in_login, in_contrasenia, in_nivel, in_nombre, in_apellido);
SET res = 0;
END IF;
END$$
DELIMITER ;
para probarlo hacemos lo siguiente:
Código MySQL:
Ver originalmysql> #insertamos un nuevo
mysql
> CALL Ins_Usuario
(@res
, 'dos', 'dos', 2, 'Dos', 'Segundo');Query OK, 1 row affected (0.06 sec)
mysql> #verificamos el resultado del procedimiento
+------+
| @res |
+------+
| 0 |
+------+
mysql> #verificamos el resultado en la tabla
+----+-------+-------------+-------+--------+-----------+
| id | login | contrasenia | nivel | Nombre | apellidos |
+----+-------+-------------+-------+--------+-----------+
| 1 | uno | uno | 1 | Uno | Unico |
| 2 | dos | dos | 2 | Dos | Segundo |
+----+-------+-------------+-------+--------+-----------+
mysql> #tratamos de insertar nuevamente el mismo registro
mysql
> CALL Ins_Usuario
(@res
, 'dos', 'dos', 2, 'Dos', 'Segundo');Query OK, 1 row affected (0.00 sec)
mysql> #verificamos el resultado del procedimiento
+------+
| @res |
+------+
| 1 |
+------+
mysql> #verificamos el resultado en la tabla
+----+-------+-------------+-------+--------+-----------+
| id | login | contrasenia | nivel | Nombre | apellidos |
+----+-------+-------------+-------+--------+-----------+
| 1 | uno | uno | 1 | Uno | Unico |
| 2 | dos | dos | 2 | Dos | Segundo |
+----+-------+-------------+-------+--------+-----------+
Saludos
Leo.