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

store procedure para validar usuario

Estas en el tema de store procedure para validar usuario en el foro de SQL Server en Foros del Web. CREATE PROCEDURE ValidaUsuario @Usuario nvarchar(50) , @Password nvarchar(50) AS if (SELECT Top 1 Usuario From dbo.Usuarios WHERE usuario = usuario) is null return 0 else ...
  #1 (permalink)  
Antiguo 29/06/2006, 06:15
Usuario no validado
 
Fecha de Ingreso: mayo-2006
Mensajes: 113
Antigüedad: 18 años
Puntos: 0
store procedure para validar usuario

CREATE PROCEDURE ValidaUsuario @Usuario nvarchar(50) , @Password nvarchar(50)
AS
if (SELECT Top 1 Usuario From dbo.Usuarios WHERE usuario = usuario) is null
return 0
else
return 1
GO

Tengo este procedimiento almacenado para validar usuario.
Si no existe me devuelva 0 si existe me devuelva 1 nada mas.
El asunto es q no me esta devolviendo bien en la conexion el valor q necesito.
Aqui va la conexion con el store procedure.

set Command1 = Server.CreateObject("ADODB.Command")
Command1.ActiveConnection = MM_Myconn_STRING
Command1.CommandText = "dbo.ValidaUsuario"
Command1.Parameters.Append Command1.CreateParameter("@RETURN_VALUE", 3, 4)
Command1.Parameters.Append Command1.CreateParameter("@usuario", 200, 1,50,Command1__usuario)
Command1.Parameters.Append Command1.CreateParameter("@password", 200, 1,50,Command1__password)
Command1.CommandType = 4
Command1.CommandTimeout = 0
Command1.Prepared = true
Command1.Execute()

response.write(Command1.parameters("@RETURN_VALUE" ).value)

Le tengo puesto el response este para ver q valor me devuelve.
Siempre o es 1 o es 0 sin importar el ususario.
Ah, toda esta conexion la hace el Dreamweaver.
Salu2
  #2 (permalink)  
Antiguo 29/06/2006, 10:03
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Código:
-- En el Stored Procedure
CREATE PROCEDURE ValidaUsuario 
@Usuario nvarchar(50) , 
@Password nvarchar(50),
@Existe bit output 
AS

Set @Existe = 0

If (SELECT count(1) From dbo.Usuarios(nolock) WHERE usuario = @usuario and Password  = @Password ) > 0
Begin
      Set @Existe = 1
End

Y en la pagina (ASP)
set Command1 = Server.CreateObject("ADODB.Command")
With Command1
	.ActiveConnection = MM_Myconn_STRING
	.CommandText = "dbo.ValidaUsuario"
	.Parameters.Append .CreateParameter("@usuario", 200, 1,50, variableLocalUsuario)
	.Parameters.Append .CreateParameter("@password", 200, 1,50,variableLocalPassword)
	.Parameters.Append .CreateParameter("@Existe", 3, 2, 3, 0)
	.CommandType = 4
	.CommandTimeout = 0
	.Prepared = true
	.Execute()
	
	response.write "<BR> Respuesta: " & .parameters(2).value	
		
End With
  #3 (permalink)  
Antiguo 29/06/2006, 15:24
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
Cita:
Siempre o es 1 o es 0 sin importar el ususario.
No veo el error, es lo que estás diciendo que haga.

En cualquier caso, RETURN se suele utilizar para mensajes de error. Si quieres regresar valores prueba las variables de retorno:

CREATE PROCEDURE ValidaUsuario
@Usuario nvarchar(50) ,
@Password nvarchar(50),
@tiene_acceso bit OUTPUT
AS
if (SELECT Top 1 Usuario From dbo.Usuarios WHERE usuario = usuario) is null
set @tiene_acceso = 0
else
set @tiene_acceso = 1
GO
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
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 18:42.