Member 12965461 Ответов: 3

Как обновить таблицу


Я должен подготовить сценарий, который будет запускаться только 1-го числа каждого месяца в 9 вечера по восточному времени, а в остальные дни он не будет запускаться.

Смотрите сценарий ниже. Я получаю ошибку при его выполнении.
Пожалуйста, предложите правильный способ сделать это .

Что я уже пробовал:

Declare @@ScriptRunDate  datetime
 set @@ScriptRunDate=  DATEADD(mm, DATEDIFF(mm, 0, GETDATE()), 0) 
 select @@ScriptRunDate
Case when 
@@ScriptRunDate
 then 
  update Cssscript set ScriptState='Active' where id='Adhoc'
else 
update Cssscript set ScriptState='InActive' where id='Adhoc'

Patrice T

- Я получаю ошибку при его выполнении.
Какое сообщение об ошибке ?

3 Ответов

Рейтинг:
28

CHill60

Вы получаете две ошибки:

Incorrect syntax near the keyword 'Case'.
and
Incorrect syntax near the keyword 'else'.

Это должно дать вам ключ к пониманию того, что вы используете неправильную конструкцию. Вы действительно хотите использовать оператор IF-see ЕСЛИ...ELSE (Transact-SQL) | Microsoft Docs[^]. Что-то вроде
Declare @@ScriptRunDate  datetime
 set @@ScriptRunDate=  DATEADD(mm, DATEDIFF(mm, 0, GETDATE()), 0) 
 select @@ScriptRunDate
IF @@ScriptRunDate 
	update Cssscript set ScriptState='Active' where id='Adhoc'
ELSE 
	update Cssscript set ScriptState='InActive' where id='Adhoc'
Однако если стороны все-таки неправильно ... вы, вероятно, хотите что-то вроде
IF @@ScriptRunDate = GETDATE() -- or whatever 


Рейтинг:
2

MadMyche

Самый простой способ запланировать сценарий, который вы действительно хотите запустить, и сохранить его как хранимую процедуру, а затем создать задание агента SQL для выполнения этого сценария в первый день месяца в 9 утра.

Создание задания[^]


Рейтинг:
1

ZurdoDev

Невежливо просить людей угадать, какую из 23 235 331 213 возможных ошибок вы получаете. Однако я приму удар на себя. Это в том случае, когда.

Если похоже, что вы действительно хотите использовать оператор IF.

IF someCondition
  BEGIN
    UPDATE ...
  END
ELSE 
  BEGIN
    UPDATE  ...
  END