ЕСЛИ операторы ELSE для обновления таблицы в sql процедуре не работают

Если вы находитесь в сценарии, когда вы зацикливаете, пока ресурс недоступен или что-то подобное, что генерирует исключение, вы можете использовать что-то вроде

import time

while True:
    try:
       f = open('some/path', 'r')
    except IOError:
       print('File could not be read. Retrying in 5 seconds')   
       time.sleep(5)
    else:
       break
0
задан Andromachiii Rozakiii 15 January 2019 в 20:58
поделиться

2 ответа

Это не имеет смысла для меня:

 UPDATE dba.Employees
  IF (dba.Employees.SalaryId  > 1 && dba.Employees.SalaryId < 7)

  SET dba.Employees.SalaryId = dba.Employees.SalaryId  + 1
  WHERE dba.Employees.PersonalID = @PersonalID

Возможно, вы хотите:

UPDATE dba.Employees
  SET dba.Employees.SalaryId = dba.Employees.SalaryId  + 1
  WHERE dba.Employees.PersonalID = @PersonalID AND
        dba.Employees.SalaryId  > 1 AND
        dba.Employees.SalaryId < 7
0
ответ дан Gordon Linoff 15 January 2019 в 20:58
поделиться

Вы дико смешиваете процедурный код (IF) и код SQL (UPDATE, WHERE) ...

Я могу представить, что вы ищете что-то вроде этого:

ALTER PROCEDURE "dba"."updatePosition"(IN @Rating int,
                                       IN @PersonalID int)
AS
BEGIN
  IF abs(@Rating) = 1 THEN
    UPDATE dba.Employees
           SET SalaryId + @Rating
           WHERE PersonalID = @PersonalID
                 AND SalaryId + @Rating >= 1
                 AND SalaryId + @Rating <= 7;
  END IF;
END;

Оно увеличивается или уменьшается - в зависимости от знака @Rating - SalaryId сотрудника, обозначенного [116 ] на 1, если это изменение не приводит к тому, что SalaryId падает ниже 1 или поднимается выше 7 - проверки для этого содержатся в предложении WHERE, а не в спреде IF где-нибудь в выражении UPDATE. Чтобы проверить, что возможны только шаги -1 или 1, UPDATE оборачивается в IF, который вводится только тогда, когда абсолютное значение @Rating равно 1. Вы также можете удалить IF, если хотите разрешить более 1 шага одновременно.

0
ответ дан sticky bit 15 January 2019 в 20:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: