La razon es porque en el return value solo puedes regresar un dato de tipo entero. Se utiliza para saber si un proceso se ejecutó correctamente o no.
0 = Ejecutado correctamente
Si es Diferente de cero ocurrio un error, y se envia su código.
Si quieres regresar el nombre debes agregar una variable de salida y atraparla en tus parametros de ASP.
p.e.
Código:
CREATE procedure dbo.login(
@user char(10)
,@clave char(10)
,@nombre varchar(50) output)
As
Set @nombre = ''
If (select count(*) from Usuarios(nolock) where Usuario=@user and Clave=@clave)
Begin
Select @nombre = isnull(nombre,'')
from usuario (nolock)
Where Usuario=@user and Clave=@clave
return 0
End
Else
Begin
Return 1
End