Hi guys, I having problems with this function, seems like @idUsuario
and @passCorrecto
aren't getting any value, so, when I use this variables in the where clause I'm not getting any result data.
ALTER FUNCTION [dbo].[login](@usuario varchar(20), @password varchar(20))
RETURNS @info TABLE (nombre varchar(70) not null, tipo varchar(30) not null)
AS
BEGIN
DECLARE @idUsuario int = dbo.usuarioExiste(@usuario)
DECLARE @passCorrecto bit = dbo.passwordCorrecto(@idUsuario, @password)
INSERT @info
SELECT
usuarios.nombreUsuario, tiposUsuarios.tipoUsuario
FROM
usuarios
LEFT JOIN
tiposUsuarios
ON
usuarios.idTipoUsuario = tiposUsuarios.idTipoUsuario
WHERE
usuarios.idUsuario = @idUsuario and
usuarios.estatus = 'ACTIVO' and
@passCorrecto = 1
RETURN
END
What am I doing wrong?
EDIT
Here are the function used above:
ALTER FUNCTION [dbo].[usuarioExiste]
(
@usuario varchar(20)
)
RETURNS integer
AS
BEGIN
DECLARE @idUsuario integer
SELECT
@idUsuario = idUsuario
FROM
usuarios
WHERE
usuario = @usuario
if @idUsuario is null begin
set @idUsuario = 0
end
RETURN @idUsuario
END
ALTER FUNCTION [dbo].[passwordCorrecto]
(
@usuario varchar(20),
@password varchar(20)
)
RETURNS bit
AS
BEGIN
DECLARE @esCorrecto bit
SELECT
@esCorrecto = case when password = @password then 1 else 0 end
FROM
usuarios
WHERE
usuario = @usuario
RETURN @esCorrecto
END
EDIT 2
As suggested by Beth, I created new functions that returns the values that I need like this:
CREATE FUNCTION [dbo].[usuarioExisteTest]
(
@usuario varchar(20)
)
RETURNS int
AS
BEGIN
declare @idUsuario int;
set @idUsuario = 1;
return (@idUsuario);
END;
By doing this I'm getting the data I need, am I setting the values to return the wrong way in the original functions?
DECLARE @idUsuario integer
SELECT
@idUsuario = idUsuario
FROM
usuarios
WHERE
usuario = @usuario