Ver Mensaje Individual
  #2 (permalink)  
Antiguo 24/07/2012, 13:10
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, 4 meses
Puntos: 2658
Respuesta: Result consisted of more than one row

Dos cosas:
1) Esta parte del código debe estar devolviendo más de un registro:
Código MySQL:
Ver original
  1. SELECT p.plantaid, p.tipo
  2.     INTO vPlanta, vTipo
  3.     FROM seguridad.usuario u
  4.         INNER JOIN db.personal p ON u.personalid = p.personalid
  5.     WHERE
  6.         u.usuario = pUsuario;

Por lo que evidentmente ese INNER JOIN está leyendo una relación 1:N o N:N. En cualquier caso, el problema es que los parámetros no permiten discriminar un único registro, como exige la sintaxis.

2) Este bloque es ineficiente:
Código MySQL:
Ver original
  1. WHEN tipo = 'A' THEN 'Auxiliar'
  2.     WHEN tipo = 'V' THEN 'Vendedor'
  3.     WHEN tipo = 'E' THEN 'Encargado'
  4.     WHEN tipo = 'M' THEN 'Administrativo'
  5.     WHEN tipo = 'R' THEN 'Repartidor'
Cuando tienes que hacer algo así es muchísimo más simple y eficiente crear una tabla con las categorías, donde tengas las decripción e identificador de cada una, y realizar un INNER JOIN que devuelva ese dato.
Además, eso aporta flexibilidad al sistema, porque te permite agregar categorías neuvas sin necesidad de tener que editar todos y cada uno de los SP y las consultas donde usas esta sintaxis tan tosca.
Esto no lo invento yo, es la forma en que se resuelven siempre estas cosas en los sistemas diseñados de modo eficiente.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)