Ver Mensaje Individual
  #2 (permalink)  
Antiguo 13/04/2010, 17:52
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: MySQL Stored Procedure count(*)

Al menos tres problemas:

1) NULL no se puede usar en MySQL como un valor de comparación porque NULL es un no-valor. Null es básicamente un puntero a la nada, y la nada no es un objeto, por lo que no se pueden usar operadores lógicos para verificarlo.
Debes usar IS NULL o IS NOT NULL (ver manual de referencia: Trabajar con valores NULL).

2) Los valores obtenidos de una función agregada como es el caso de COUNT(), no se asignan como si programases en VB. Se deben asignar usando INTO variable o haciendo uso de SET.

3) No se deben usar los mismos nombres para las variables que para los campos, tablas o bases porque se producen problemas de interpretación, ya que la jerarquía de los mismos es distinta y el parser prioriza las tablas sobre los campos y estos sobre las variables.

Código MySQL:
Ver original
  1. CREATE PROCEDURE `sp_usua_registrousuario`(IN usuario VARCHAR(10))
  2.     DECLARE  num SMALLINT;
  3.     SET num = (SELECT count(*) FROM usua_usuario WHERE  cusuario = usuario);
  4.     IF (num=0 OR num IS NULL) THEN
  5.         SELECT 0;
  6.     ELSE
  7.         SELECT 1;
  8.     END IF;
Tip final: No uses cadenas donde van números. Eso obliga a realizar conversiones implícitas innecesarias.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)