Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Error!

Estas en el tema de Error! en el foro de SQL Server en Foros del Web. Alguien puede ayudareme a determinar la causa del siguiente error:"Procedure 'BuscarSolicitante' expects parameter '@IdSol', which was not supplied". Este es el codigo:El codigo me valida ...
  #1 (permalink)  
Antiguo 14/07/2006, 22:51
 
Fecha de Ingreso: mayo-2005
Mensajes: 274
Antigüedad: 19 años
Puntos: 0
Pregunta Error!

Alguien puede ayudareme a determinar la causa del siguiente error:"Procedure 'BuscarSolicitante' expects parameter '@IdSol', which was not supplied".

Este es el codigo:El codigo me valida cuando un usuario introduce por equivocacion un email o cedula de identidad erronea

Código PHP:
CREATE PROCEDURE BuscarSolicitante(
@
email nvarchar(50), @ced nvarchar(50), 
@
IdSol int output
)  
AS
 IF (
SELECT COUNT(EMAIL
    
FROM SOLICITANTE 
     WHERE 
@email EMAIL)<0
      BEGIN 
      SET 
@IdSol=-1
    
RETURN @IdSol
      END
ELSE 
 IF (
SELECT COUNT(CED_ID)
    
FROM SOLICITANTE
    WHERE CED_ID
=@ced)<0
     BEGIN
    SET 
@IdSol=-2
    
RETURN @IdSol
      
     END
ELSE
  
BEGIN
  SELECT 
@IdSol=ID_SOLICITANTE
    FROM SOLICITANTE
    WHERE EMAIL
=@email AND CED_ID=@ced    
    
RETURN @IdSol
END
GO 
  #2 (permalink)  
Antiguo 15/07/2006, 10:39
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Procedure 'BuscarSolicitante' expects parameter '@IdSol', which was not supplied"

Traduccion : El procedimiento 'BuscarSolicitante' espera el parametro '@IdSol', el cual no ha sido ingresado(enviado).
  #3 (permalink)  
Antiguo 15/07/2006, 11:13
 
Fecha de Ingreso: mayo-2005
Mensajes: 274
Antigüedad: 19 años
Puntos: 0
hola, pero no entiendo porque la idea es buscar el IdSol si alguno de los valores especificados en EMAIL o CED_ID no concuerda se retorna los valores de IdSol= -1 o -2 y si ambos valores concuerdan se retorna el valor del IdSol.

Este SP lo estoy utilizando para un incio de sesion donde el usuario introduce su email y cedula de identidad, pero que pasa si el usuario se equivoca al introducir algunos de estos dos datos?

me entiendes?

De todas formas dejame revisar mi codigo....Gracias!
  #4 (permalink)  
Antiguo 17/07/2006, 14:46
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
lo que pasa es que no estas enviando una variable desde tu aplicacion para recoger el valor devuelto...

algo como :

Declare @idsolicitante int
Execute BuscarSolicitante 'email','cedula', @IdSolicitante output
print @IdSolicitante

si en la llamada al sp no incluyo el ultimo parametro me enviaria el error que mencionas
  #5 (permalink)  
Antiguo 19/07/2006, 21:54
 
Fecha de Ingreso: mayo-2005
Mensajes: 274
Antigüedad: 19 años
Puntos: 0
Si, lo envio con esta linea de codigo:

SqldaSol.SelectCommand.Parameters.Add(New SqlParameter("@IdSol", SqlDbType.Int))
SqldaSol.SelectCommand.Parameters("@IdSol").Direct ion = ParameterDirection.Output

y lo recibo con esta otra:

Dim intIdSol As Integer = SqldaSol.SelectCommand.Parameters("@IdSol").Value( )

y sin embargo me bota este otro error:

La conversión del tipo 'DBNull' al tipo 'Integer' no es válida

Que podra suceder?
  #6 (permalink)  
Antiguo 20/07/2006, 08:57
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
que no todos los caminos del flujo de tu sp asignan un valor a @IDSol(ya sea porque no entra en el if correcto o porque simplemente en la bd hay un nulo en el campo que estas asignando) por lo que se regresa en nulo y al llegar a la aplicacion no lo puede convertir de nulo a entero.

Una es revizar bien el flujo para probar que se este realizando correctamente el proceso

y para no regresar nulos...al final de todos los ifs poner una sentencia :

Set @IdSol = isnull(@IdSol, -1)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:31.