У меня проблемы с этой функцией, похоже, что @idUsuario
и @passCorrecto
не получают никакого значения, поэтому, когда я использую эти переменные в предложении where, я не получаю никаких результатов.
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
Что я делаю не так?
EDIT
Вот функция, использованная выше:
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
РЕДАКТИРОВАТЬ 2
Как предположил Бет, я создал новые функции, которые возвращают нужные мне значения, например:
CREATE FUNCTION [dbo].[usuarioExisteTest]
(
@usuario varchar(20)
)
RETURNS int
AS
BEGIN
declare @idUsuario int;
set @idUsuario = 1;
return (@idUsuario);
END;
Делая это, я получаю необходимые мне данные, я устанавливаю значения, чтобы они возвращали неправильный путь в исходных функциях?
DECLARE @idUsuario integer
SELECT
@idUsuario = idUsuario
FROM
usuarios
WHERE
usuario = @usuario