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

SP que no funciona

Estas en el tema de SP que no funciona en el foro de SQL Server en Foros del Web. Estimados: Cree el siguiente SP: Código: USE [TFI] GO /****** Object: StoredProcedure [dbo].[Seg_UsuarioVerificarPassword] Script Date: 09/29/2011 21:39:42 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON ...
  #1 (permalink)  
Antiguo 29/09/2011, 19:03
Avatar de moron  
Fecha de Ingreso: mayo-2004
Mensajes: 972
Antigüedad: 19 años, 11 meses
Puntos: 2
SP que no funciona

Estimados:

Cree el siguiente SP:

Código:
USE [TFI]
GO
/****** Object:  StoredProcedure [dbo].[Seg_UsuarioVerificarPassword]    Script Date: 09/29/2011 21:39:42 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[Seg_UsuarioVerificarPassword] 
	-- Add the parameters for the stored procedure here
	@nombreUsuario varchar(20),
	@password varchar(20)
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

    -- Insert statements for procedure here
    
	Select * 
From Seg_Usuario 
Where [NombreUsuario] = @nombreUsuario and [Password] = @password 


END
Cuando lo ejecuto con datos que matchean me da cero resultado.

Código:
USE [TFI]
GO

DECLARE	@return_value int

EXEC	@return_value = [dbo].[Seg_UsuarioVerificarPassword]
		@nombreUsuario like N'juan',
		@password like N'20dd03088d8f13e7b04c80e10ab39f95'

SELECT	'Return Value' = @return_value

GO
sin embargo, cuando lo ejecuto así me devuelve el registro:

Código:
use tfi
select * from dbo.Seg_Usuario where [NombreUsuario]='juan'
and [Password]='20dd03088d8f13e7b04c80e10ab39f95'

Alguna idea?
  #2 (permalink)  
Antiguo 29/09/2011, 19:38
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 16 años, 6 meses
Puntos: 85
Respuesta: SP que no funciona

El problema es que el parámetro @password del procedimiento está definido como varchar(20) y el valor '20dd03088d8f13e7b04c80e10ab39f95' que le pasas en la llamada supera esta longitud, en estos casos, SQL Server trunca la cadena a los primeros 20 caracteres, y como consecuencia la condición [Password] = @password ya no se cumple.

Por otro lado, el retorno del procedimiento es un conjunto de resultados, por lo que no tiene mucho sentido el código:

Código:
DECLARE	@return_value int
EXEC	@return_value = [dbo].[Seg_UsuarioVerificarPassword]
Simplemente debes ejecutar:

Código:
EXEC	[dbo].[Seg_UsuarioVerificarPassword]
		@nombreUsuario = N'juan',
		@password = N'20dd03088d8f13e7b04c80e10ab39f95
Saludos
  #3 (permalink)  
Antiguo 30/09/2011, 10:22
Avatar de moron  
Fecha de Ingreso: mayo-2004
Mensajes: 972
Antigüedad: 19 años, 11 meses
Puntos: 2
Respuesta: SP que no funciona

Era Eso.

Muchas gracias

Etiquetas: select
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 16:41.