Когда я вставляю пароль с помощью шифрования получаю ошибку
CREATE TABLE [dbo].[tbl_user]( [id] [int] IDENTITY(1,100) NOT NULL, [full_name] [varchar](100) NOT NULL, [email] [varchar](255) NOT NULL, [phone] [varchar](100) NOT NULL, [password] [varbinary](max) NOT NULL, [photo] [varchar](255) NOT NULL, [role] [varchar](30) NOT NULL, [status] [varchar](10) NOT NULL, )
это структура таблицы
и использование процедуры хранения зашифрованного пароля
CREATE PROC [dbo].[usp_tbl_userInsert] @pFlag varchar(10), @id int, @full_name varchar(100), @email varchar(255), @phone varchar(100), @password varbinary(max), @photo varchar(255), @role varchar(30), @status varchar(10) AS BEGIN BEGIN TRY BEGIN TRANSACTION if @pFlag='I' BEGIN INSERT INTO dbo.tbl_user (id, full_name, email, phone, password, photo, role, status) SELECT @id, @full_name, @email, @phone,CONVERT(varbinary(MAX),encryptbypassphrase('IAMGROOT',@password)), @photo, @role, @status IF @@TRANCOUNT > 0 COMMIT END IF @pFlag='E' BEGIN BEGIN TRANSACTION UPDATE dbo.tbl_user SET full_name = @full_name, email = @email, phone = @phone, password =CONVERT(varbinary(MAX),encryptbypassphrase('IAMGROOT',@password)), photo = @photo, role = @role, status = @status WHERE id = @id IF @@TRANCOUNT > 0 COMMIT END IF @pFlag='D' BEGIN DELETE FROM dbo.tbl_user WHERE id = @id END END TRY BEGIN CATCH IF @@TRANCOUNT > 0 ROLLBACK SELECT ERROR_NUMBER() AS ErrorNumber SELECT ERROR_MESSAGE() AS ErrorMessage END CATCH END --Exec [usp_tbl_userInsert] 'I',0,'ewrwer','wrwer@gmail.com','0987654321',Vikas,'','sysadmin',''
Что я уже пробовал:
получаю ошибку
Цитата:Msg 257, Уровень 16, состояние 3, процедура usp_tbl_userInsert, строка 0
Неявное преобразование из типа данных varchar в varbinary(max) не допускается. Используйте функцию CONVERT для выполнения этого запроса.