Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Хранимые процедуры  [new]
fowl86
Member

Откуда:
Сообщений: 14
В хранимой процедуре есть кусок кода обращающийся к трехмерной БД, он возвращает таблицу в dt1 или ошибку в случае если ничего не найдено (эту ошибку ничем не заменить).
Как в процедуре перехватить эту ошибку и сделать dt1 просто пустой таблицей (иначе из-за ошибки прерывается выполнение процедуры)??
***
create table #dt (ot varchar(255) null,dc varchar(255) nulll)
	
  declare @sql nvarchar(4000)
  set @sql = 'insert #dt select * from openquery(****)'	

exec(@sql)
		

***
21 ноя 11, 12:58    [11631137]     Ответить | Цитировать Сообщить модератору
 Re: Хранимые процедуры  [new]
trew
Member

Откуда: Москва
Сообщений: 2646
fowl86,

Проверить существование таблицы предварительно, чтобы не было ошибки.
IF OBJECT_ID(N'SQL2.dbo.base..tmp_prd') is not null 
BEGIN если она есть что-то делаем END
21 ноя 11, 13:08    [11631223]     Ответить | Цитировать Сообщить модератору
 Re: Хранимые процедуры  [new]
fowl86
Member

Откуда:
Сообщений: 14
В какой момент ее проверять??

Ошибка возникает в строке set @sql = 'insert #dt select * from openquery(****)'
21 ноя 11, 13:22    [11631382]     Ответить | Цитировать Сообщить модератору
 Re: Хранимые процедуры  [new]
trew
Member

Откуда: Москва
Сообщений: 2646
fowl86
В какой момент ее проверять??

Ошибка возникает в строке set @sql = 'insert #dt select * from openquery(****)'


Ошибка не может возникать в этой строке т.к. это присваивание текста.
Ошибка может быть при выполнении exec(@sql). Так прежде чем инсертить, нужно проверить есть ли таблица.
21 ноя 11, 13:25    [11631425]     Ответить | Цитировать Сообщить модератору
 Re: Хранимые процедуры  [new]
vindofs
Member

Откуда: دمشق
Сообщений: 623
расскажите новичку, что такое 3х-мерная БД?
21 ноя 11, 13:32    [11631516]     Ответить | Цитировать Сообщить модератору
 Re: Хранимые процедуры  [new]
fowl86
Member

Откуда:
Сообщений: 14
все равно не понимаю как вставить... вставляется ведь сразу результат выполнения... если можно напишите подробнее. Спасибо!

set @sql = 'insert #dt select * from openquery(** сам запрос в з-х мерную базу**')'
21 ноя 11, 14:36    [11632134]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить