#sybase
#sybase
Вопрос:
Я хотел бы проверить, не существует ли таблица, затем создайте ее, в противном случае вставьте в нее данные.
use tempdb
if object_id('guest.my_tmpTable') IS NULL
begin
CREATE TABLE guest.my_tmpTable (
id int,
col1 varchar(100)
)
end
--- do insert here ...
При первом запуске таблица была создана, но при втором запуске sybase жалуется, что таблица уже существует.
Спасибо!
Комментарии:
1. Вы видите его в списке sysobjects? (выберите * из sysobjects, где name=’my_tmpTable’)
Ответ №1:
Причина в том, что весь оператор if и его «истинная» часть компилируются как одно целое.
Если таблица существует во время компиляции — ошибка.
Таким образом, вы могли бы поместить CREATE TABLE
оператор в динамический sql statemetn EXEC('CREATE TABLE....')
Тогда все, что Sybase видит при компиляции, это:
IF object_id('mytab') IS NULL
EXEC('something or other')
Содержимое EXEC
не компилируется до выполнения, когда вы знаете, что таблицы нет, и все хорошо.