Когда вы используете EXISTS
с именем таблицы, чтобы увидеть, существует ли таблица, вы на самом деле пытаетесь получить доступ к таблице - которой нет. Вот почему вы получаете ошибку, а не из-за вашего заявления UPDATE
.
Попробуйте вместо этого:
SET @sql = 'IF (OBJECT_ID(''ps_vars_' + @datasetid + ''') IS NOT NULL)
BEGIN
UPDATE ...
END'
Тогда подумайте, что может быть не так с вашей базой данных, которая требует от вас использования динамического SQL, подобного этому. Возможно, ваш дизайн именно такой, каким он должен быть, но, по моему опыту, 9 из 10 раз (возможно, намного больше) такого рода код является признаком плохого дизайна.