MS SQL Server 2000 вопросик
Правила форума
Пожалуйста, ознакомьтесь с правилами данного форума
Пожалуйста, ознакомьтесь с правилами данного форума
-
- Пользователь
- Сообщения: 118
- Зарегистрирован: 21 окт 2005, 03:16
- Откуда: было оттуда, теперь отсюда
MS SQL Server 2000 вопросик
Есть таблица с именами других таблиц.
Нужно сделать
foreach TableName
delete from TableName where someid=x
Такое возможно сделать в самом SQLе?
thx
Нужно сделать
foreach TableName
delete from TableName where someid=x
Такое возможно сделать в самом SQLе?
thx
-
- Житель
- Сообщения: 915
- Зарегистрирован: 09 мар 2003, 22:46
-
- Пользователь
- Сообщения: 118
- Зарегистрирован: 21 окт 2005, 03:16
- Откуда: было оттуда, теперь отсюда
Таблица елементарная, типа такого:
Пример можно? Что имеется виду под "комплексным запросом"?
Код: Выделить всё
CREATE TABLE [dbo].[TableNames] (
ID int IDENTITY (1, 1) NOT NULL ,
tableName nvarchar (50)
) ON [PRIMARY]
GO
-
- Житель
- Сообщения: 915
- Зарегистрирован: 09 мар 2003, 22:46
А что, все таблицы имеюь одинаковую структуру, например имеют такое поле someid?
Если да, то решение в лоб это хранимая процедура которая создает курсор с именами таблиц, бежит по ним и вызывает запрос на удаление для каждой таблицы.
Пример я сейчас не наваяю, но в примерах самого SQL это должно быть.
Если да, то решение в лоб это хранимая процедура которая создает курсор с именами таблиц, бежит по ним и вызывает запрос на удаление для каждой таблицы.
Пример я сейчас не наваяю, но в примерах самого SQL это должно быть.
-
- Маньяк
- Сообщения: 2843
- Зарегистрирован: 20 фев 2003, 09:15
- Откуда: Vancouver
Re: MS SQL Server 2000 вопросик
Select 'delete from ' + table_name + ' where someid = x' from source_tableAlexK писал(а):Есть таблица с именами других таблиц.
Нужно сделать
foreach TableName
delete from TableName where someid=x
Такое возможно сделать в самом SQLе?
thx
Результат сохранить в файл. ПОлучишь сикуел файл в котором будет много таких команд чилом равным количеству таблиц.
-
- Маньяк
- Сообщения: 2843
- Зарегистрирован: 20 фев 2003, 09:15
- Откуда: Vancouver
-
- Житель
- Сообщения: 915
- Зарегистрирован: 09 мар 2003, 22:46
-
- Маньяк
- Сообщения: 2843
- Зарегистрирован: 20 фев 2003, 09:15
- Откуда: Vancouver
-
- Пользователь
- Сообщения: 118
- Зарегистрирован: 21 окт 2005, 03:16
- Откуда: было оттуда, теперь отсюда
Разобрался,всем спасибо.
Код: Выделить всё
DECLARE @AuditID nvarchar(50)
SET @AuditID = 'BALD1AMA'
DECLARE @TableName nvarchar(50)
DECLARE Tables_Cursor CURSOR FOR
SELECT tableName FROM dbo.tblTables
OPEN Tables_Cursor
FETCH NEXT FROM Tables_Cursor INTO @TableName
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT 'Deleting from ' + @TableName
EXECUTE('delete from '+@TableName+' where AuditID='''+@AuditID+'''')
FETCH NEXT FROM Tables_Cursor INTO @TableName
END
CLOSE Tables_Cursor
DEALLOCATE Tables_Cursor
- Lepsik
- Житель
- Сообщения: 522
- Зарегистрирован: 17 фев 2003, 18:34
- Откуда: Berlin
- Контактная информация:
-
- Пользователь
- Сообщения: 107
- Зарегистрирован: 02 авг 2004, 22:00
sql
Lepcik-Celko, ты бы хоть пояснял давая такие советы что эта процедура is undocumented and usupported
-
- Пользователь
- Сообщения: 118
- Зарегистрирован: 21 окт 2005, 03:16
- Откуда: было оттуда, теперь отсюда
- Lepsik
- Житель
- Сообщения: 522
- Зарегистрирован: 17 фев 2003, 18:34
- Откуда: Berlin
- Контактная информация:
Re: sql
ну и что ? mssql200/2005 отлично поддерживают.Yuri Dimant писал(а):Lepcik-Celko, ты бы хоть пояснял давая такие советы что эта процедура is undocumented and usupported
пользоваться легко
Код: Выделить всё
exec sp_MSForeachTable 'if exists (select * from tbl where id=substring(''?'', 8, len(''?'')-8) ) truncate table ?'