Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / В хранимой процедуре нужно добавить параметры / 7 сообщений из 7, страница 1 из 1
16.12.2018, 19:10
    #39748664
nidef
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В хранимой процедуре нужно добавить параметры
По подсказке Aleks222 удалось создать рабочую хранимую процедуру шифрования данных (далее процедура вызывается из клиентского приложения):

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
CREATE PROCEDURE Shifrovanie123
AS
BEGIN
    OPEN SYMMETRIC KEY SimmetrKey
    DECRYPTION BY CERTIFICATE Sertifikat123
-- Если в столбце отсутствуют записи с нулевыми и пустыми значениями, то шифруем данные 
-- столбца Faktich_Adres и записываем их в столбец Shifr_Faktich_Adres
  IF not exists( SELECT * FROM [Klient] where [Faktich_Adres]='' or [Faktich_Adres] is null )
 BEGIN
    UPDATE Klient
    SET Shifr_Faktich_Adres = ENCRYPTBYKEY(KEY_GUID('SimmetrKey'), [Faktich_Adres])
    UPDATE Klient
    SET Faktich_Adres = NULL
  END
  ELSE
--В противном случае дешифруем все записи и записываем их в столбец Faktich_Adres 
  BEGIN
    UPDATE Klient
    SET Faktich_Adres = DECRYPTBYKEY(Shifr_Faktich_Adres)
    UPDATE Klient
    SET Shifr_Faktich_Adres = NULL
  END
END



Теперь в этой хранимой процедуре требуется определить два (можно три) параметра, имеющих тип varbinary(256)!!!, например, так:
CREATE PROCEDURE Shifrovanie123 (n1 varbinary(256), n2 varbinary(256)).
Ну, то есть в процедуру нужно добавить два-три параметра.
Подскажите, пожалуйста, что в этой процедуре можно определить в качестве параметров?
Я в T-SQL не очень, поэтому буду благодарен, если подсказку бросите в виде кода.
...
Рейтинг: 0 / 0
16.12.2018, 23:30
    #39748742
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В хранимой процедуре нужно добавить параметры
Надо -- добавляйте, мы не против. Синтаксис с примерами в хелпе .
...
Рейтинг: 0 / 0
17.12.2018, 15:06
    #39748990
iiyama
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В хранимой процедуре нужно добавить параметры
nidef,

Может этот механизм будет более предпочтителен для Вашей задачи?
...
Рейтинг: 0 / 0
17.12.2018, 16:39
    #39749045
Valery_B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В хранимой процедуре нужно добавить параметры
Так ?
Код: sql
1.
2.
3.
4.
5.
ALTER PROCEDURE Shifrovanie123 @n1 varbinary(MAX), @n2 varbinary(MAX)
AS
BEGIN
...
END
...
Рейтинг: 0 / 0
17.12.2018, 18:48
    #39749131
nidef
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В хранимой процедуре нужно добавить параметры
Спасибо! Вот что у меня получилось. На работоспособность пока не проверял. Не могу понять, нужен ли здесь SELECT?


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
ALTER PROCEDURE [dbo].[Shifrovanie] 
@Faktich_Adres varchar(100), 
@Shifr_Faktich_Adres varbinary(256) OUTPUT
AS
BEGIN
    OPEN SYMMETRIC KEY SimmetrKey
    DECRYPTION BY CERTIFICATE Sertifikat123
-- Если в столбце отсутствуют записи с нулевыми и пустыми значениями, то шифруем данные 
-- столбца Faktich_Adres и записываем их в столбец Shifr_Faktich_Adres
  IF not exists( SELECT * FROM [Klient] where [Faktich_Adres]='' or [Faktich_Adres] is null )
 BEGIN
    UPDATE Klient
    SET Shifr_Faktich_Adres = ENCRYPTBYKEY(KEY_GUID('SimmetrKey'), [Faktich_Adres])
    UPDATE Klient
    SET Faktich_Adres = NULL
    UPDATE Klient
    -- !!!!!!!!!!!!! Здесь вроде бы нужен SELECT, а не SET?
	SET @Shifr_Faktich_Adres = Shifr_Faktich_Adres
  END
  ELSE
-- В противном случае дешифруем все записи и записываем их в столбец Faktich_Adres 
  BEGIN
    UPDATE Klient
    SET Faktich_Adres = DECRYPTBYKEY(Shifr_Faktich_Adres)
    UPDATE Klient
    SET Shifr_Faktich_Adres = NULL
	UPDATE Klient
   --!!!!!!!!!!!!! Здесь вроде бы нужен SELECT, а не SET?
	SET @Faktich_Adres = Faktich_Adres
  END
END
...
Рейтинг: 0 / 0
17.12.2018, 18:56
    #39749134
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В хранимой процедуре нужно добавить параметры
У оператора update тоже есть from и where. Вы бы не угадывали синтаксис, а в хелпе бы его посомотрели, с примерами.
...
Рейтинг: 0 / 0
18.12.2018, 11:20
    #39749322
iiyama
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В хранимой процедуре нужно добавить параметры
nidef,
У Вас странный стиль программирования, "по наитию".
ИМХО
1. начать с этого
2. далее UPDATE
обратите внимание на [ <OUTPUT Clause> ] Это даст ответ на Ваш коммент -- !!!!!!!!!!!!! Здесь вроде бы нужен SELECT, а не SET?
3. Заведите аттрибут в таблице = {Зашифровано, Не зашифровано}, или хотя бы проверяйте у Вас зашифрованное поле или еще нет, а то запорите записи повторным вызовом
4. Инструкция UPDATE позволяет изменять несколько записей
5. Надеюсь все это Вы делаете для обучения, а не в производстве или хотя бы на тестовой базе. Если нет п.1 и делайте тестовое окружение

Удачи
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / В хранимой процедуре нужно добавить параметры / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]