Если вы находитесь в сценарии, когда вы зацикливаете, пока ресурс недоступен или что-то подобное, что генерирует исключение, вы можете использовать что-то вроде
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
Это не имеет смысла для меня:
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
Вы дико смешиваете процедурный код (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
шага одновременно.