Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Хранимые процедуры  [new]
fRosSty
Member

Откуда:
Сообщений: 30
Прошу прощения за глупый вопрос. Хранимые процедуры могут быть без входных параметров?
+
Create Procedure [dbo].[change_password]

AS
BEGIN

Set Nocount ON;

if (DAY(GETDATE) = 1)
Update p
set Flags = 3 From T_USERS as p
Where DATEDIFF(month,p.LastPasswordChangeDate, GETDATE)>=4 AND Flags != 0
else
break

END

запуск такой процедуры будет корректен?
22 сен 16, 13:30    [19696383]     Ответить | Цитировать Сообщить модератору
 Re: Хранимые процедуры  [new]
Konst_One
Member

Откуда:
Сообщений: 11623
да, могут быть без параметров
22 сен 16, 13:31    [19696389]     Ответить | Цитировать Сообщить модератору
 Re: Хранимые процедуры  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
fRosSty,

BEGIN - лишний
END - лишний
ELSE - лишний
BREAK - лишний

В WHERE условие для DATEDIFF заменить на условие непосредственно для LastPasswordChangeDate,
иначе индекс не будет использоваться, если есть, конечно.

Flag, кроме 0, наверно и 3 не равен, иначе зачем его апдейтить, верно?
22 сен 16, 13:52    [19696500]     Ответить | Цитировать Сообщить модератору
 Re: Хранимые процедуры  [new]
fRosSty
Member

Откуда:
Сообщений: 30
iap,
Такой вопрос, эта процедура будет выполняться автоматически, 1 числа каждого месяца, else break точно не нужен?
и не совсем понял про WHERE. Я проверяю что дата LastPasswordChangeDate по сравнению с текущей датой имеет разницу в 4 или больше месяца
22 сен 16, 14:11    [19696626]     Ответить | Цитировать Сообщить модератору
 Re: Хранимые процедуры  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
fRosSty
iap,
Такой вопрос, эта процедура будет выполняться автоматически, 1 числа каждого месяца, else break точно не нужен?
и не совсем понял про WHERE. Я проверяю что дата LastPasswordChangeDate по сравнению с текущей датой имеет разницу в 4 или больше месяца
Проверяете не дату, а результат функции DATEDIFF(), для которой, конечно же, никакого индекса быть не может.

Чем отличается ELSE BREAK от простого невыполнения IF?
22 сен 16, 14:14    [19696651]     Ответить | Цитировать Сообщить модератору
 Re: Хранимые процедуры  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8828
iap,

автор
BEGIN - лишний
END - лишний


Не лишний, а не обязательный. Тем не менее, MS в своих шаблонах его пишет.
23 сен 16, 10:01    [19699162]     Ответить | Цитировать Сообщить модератору
 Re: Хранимые процедуры  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 28355
iap
fRosSty
iap,
Такой вопрос, эта процедура будет выполняться автоматически, 1 числа каждого месяца, else break точно не нужен?
и не совсем понял про WHERE. Я проверяю что дата LastPasswordChangeDate по сравнению с текущей датой имеет разницу в 4 или больше месяца
Проверяете не дату, а результат функции DATEDIFF(), для которой, конечно же, никакого индекса быть не может.

Раз в месяц процедура выполняется. Вангую, что скорость выполнения устраивает.
23 сен 16, 10:11    [19699200]     Ответить | Цитировать Сообщить модератору
 Re: Хранимые процедуры  [new]
Megabyte
Member

Откуда: ближайшее заМКАДье
Сообщений: 4997
Владислав Колосов
iap,

автор
BEGIN - лишний
END - лишний


Не лишний, а не обязательный. Тем не менее, MS в своих шаблонах его пишет.

Точно. Я сам стараюсь почти всегда писать, так имхо нагляднее.
23 сен 16, 10:32    [19699254]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить