powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / В хранимой процедуре нужно добавить параметры
7 сообщений из 7, страница 1 из 1
В хранимой процедуре нужно добавить параметры
    #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
В хранимой процедуре нужно добавить параметры
    #39748742
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо -- добавляйте, мы не против. Синтаксис с примерами в хелпе .
...
Рейтинг: 0 / 0
В хранимой процедуре нужно добавить параметры
    #39748990
iiyama
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nidef,

Может этот механизм будет более предпочтителен для Вашей задачи?
...
Рейтинг: 0 / 0
В хранимой процедуре нужно добавить параметры
    #39749045
Valery_B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так ?
Код: sql
1.
2.
3.
4.
5.
ALTER PROCEDURE Shifrovanie123 @n1 varbinary(MAX), @n2 varbinary(MAX)
AS
BEGIN
...
END
...
Рейтинг: 0 / 0
В хранимой процедуре нужно добавить параметры
    #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
В хранимой процедуре нужно добавить параметры
    #39749134
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У оператора update тоже есть from и where. Вы бы не угадывали синтаксис, а в хелпе бы его посомотрели, с примерами.
...
Рейтинг: 0 / 0
В хранимой процедуре нужно добавить параметры
    #39749322
iiyama
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nidef,
У Вас странный стиль программирования, "по наитию".
ИМХО
1. начать с этого
2. далее UPDATE
обратите внимание на [ <OUTPUT Clause> ] Это даст ответ на Ваш коммент -- !!!!!!!!!!!!! Здесь вроде бы нужен SELECT, а не SET?
3. Заведите аттрибут в таблице = {Зашифровано, Не зашифровано}, или хотя бы проверяйте у Вас зашифрованное поле или еще нет, а то запорите записи повторным вызовом
4. Инструкция UPDATE позволяет изменять несколько записей
5. Надеюсь все это Вы делаете для обучения, а не в производстве или хотя бы на тестовой базе. Если нет п.1 и делайте тестовое окружение

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


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