У меня есть две отдельные хранимые процедуры: одна для добавления нового сотрудника в БД, а другая для получения сотрудника из БД.Я использую 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
К сожалению, результат запроса второй процедуры не содержит данных.У меня такое ощущение, что я делаю что-то не так в первой процедуре (добавь сотрудника).