расшифровка следующего хэша для того же идентификатора не работает - PullRequest
0 голосов
/ 27 марта 2019

У меня есть две отдельные хранимые процедуры: одна для добавления нового сотрудника в БД, а другая для получения сотрудника из БД.Я использую SHA2_256 и похоже, что он работает хорошо при вставке данных, но при использовании того же метода для получения сотрудника что-то не работает.

Это SP для добавления сотрудника.

USE [db11]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[io_sp_admin_add_emp]
@Id BIGINT, @Lname VARCHAR(20), @Fname VARCHAR(15),@Gender TINYINT,@Bday DATETIME,@LoggedInUser VARCHAR(10)

AS

BEGIN
SET NOCOUNT ON;
BEGIN TRY

DECLARE @HashId varbinary(50) =  HashBytes('SHA2_256', cast(@Id as varbinary(50)))

INSERT INTO io_t_employees(
 lname,
 fname,
 gender,
 bday,
 [user_name],
 hash_id
 )
 VALUES(

 LTRIM(RTRIM(@Lname)),
 LTRIM(RTRIM(@Fname)),
 @Gender,
 @Bday,
 @loggedInUser,
 @HashId,
 )

SELECT CAST(1 as BIT) as 'Status', 'Succeeded' as 'ReturnMessage' 
END TRY

BEGIN CATCH        
END

И затем я бы хотел получить UniqueId пользователя в соответствии с HashId, сохраненным ранее.

USE [db11]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[io_sp_admin_emp_helper]
    -- Add the parameters for the stored procedure here
    @id INT

AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    SELECT UniqueId 
    FROM io_t_employees
    WHERE hash_id = HashBytes('SHA2_256', cast(@id as varbinary(50)))
END

К сожалению, результат запроса второй процедуры не содержит данных.У меня такое ощущение, что я делаю что-то не так в первой процедуре (добавь сотрудника).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...