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

Откуда:
Сообщений: 116
Выполняю запрос поиска таблиц по ID

SELECT name
FROM sysobjects WHERE id in (341576255,421576540)

Как их удалить? Нужно что то типо этого

drop table
FROM sysobjects WHERE id in (341576255,421576540)
18 июн 17, 15:27    [20572952]     Ответить | Цитировать Сообщить модератору
 Re: как удалить несколько таблиц из списка  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36689
https://www.sql.ru/faq/faq_topic.aspx?fid=104 + курсор
18 июн 17, 15:34    [20572961]     Ответить | Цитировать Сообщить модератору
 Re: как удалить несколько таблиц из списка  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3444
Romanov-krd
Выполняю запрос поиска таблиц по ID

SELECT name
FROM sysobjects WHERE id in (341576255,421576540)

Как их удалить? Нужно что то типо этого

drop table
FROM sysobjects WHERE id in (341576255,421576540)


слепить строку и выполнить динамический запрос.
18 июн 17, 15:41    [20572969]     Ответить | Цитировать Сообщить модератору
 Re: как удалить несколько таблиц из списка  [new]
Romanov-krd
Member

Откуда:
Сообщений: 116
declare @name varchar(255)
DECLARE my_cur1 CURSOR FOR

SELECT name
FROM sysobjects WHERE id in (341576255,421576540)

open my_cur1
fetch next from my_cur1 into @name
while @@FETCH_STATUS=0
begin
select 'drop table ' + @name FROM sysobjects WHERE id in (341576255,421576540) --- динамич sql
fetch next from my_cur1 into @name
end
close my_cur1
deallocate my_cur1


Вроде написал но в итоге выводит строки drop table_name_DB по количеству таблиц. Кажется в курсоре в селекте что то не то написал не могу понять что
18 июн 17, 17:04    [20573061]     Ответить | Цитировать Сообщить модератору
 Re: как удалить несколько таблиц из списка  [new]
Romanov-krd
Member

Откуда:
Сообщений: 116
я разобрался!!! вот как правильно
declare @name varchar(255),
		@udal varchar(255)
DECLARE my_cur1 CURSOR FOR

SELECT name
FROM sysobjects WHERE id in (341576255,421576540)

open my_cur1
fetch next from my_cur1 into @name
while @@FETCH_STATUS=0
begin
set @udal= 'drop table ' + @name --- динамич sql
exec(@udal)
fetch next from my_cur1 into @name
end
close my_cur1
deallocate my_cur1
18 июн 17, 17:14    [20573074]     Ответить | Цитировать Сообщить модератору
 Re: как удалить несколько таблиц из списка  [new]
Cammomile
Member

Откуда:
Сообщений: 1212
fetch next from my_cur1 into @name
while @@FETCH_STATUS=0
begin
set @udal= 'drop table ' + @name --- динамич sql
exec(@udal)
fetch next from my_cur1 into @name
end
close my_cur1
deallocate my_cur1

====>
  
open crsr
while 1 = 1  
begin
  fetch next from crsr 
  if @@FETCH_STATUS <> 0 break 

  /*do things here */

end 

close crsr
deallocate  crsr 
19 июн 17, 10:52    [20573911]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить