Запрос на удаление данных из имен таблиц, перечисленных в таблице - PullRequest
0 голосов
/ 23 марта 2012

У меня есть база данных «Студент», которая содержит около 20 таблиц.одна из таблиц - это «Столбцы», в которой хранятся все имена столбцов в столбце «Столбцы-имена» из всех таблиц, представленных в базе данных «Студент».Эта таблица также хранит имена таблиц в столбце «Table_Names»

Теперь я хочу написать запрос, который запрашивает таблицу «Columns» и ищет «Column_Name» с последними четырьмя символами как «test».Вот мой запрос для этого:

SELECT *
  FROM Students.Columns
  WHERE Column_Name Like '%test'

Теперь я хочу написать запрос на удаление, который бы удалял данные из всех таблиц, перечисленных в столбце «Table_Names» в выводе запроса выше, где столбцы с последними четырьмя символами«test» имеет «del» в качестве данных.

Как я могу это сделать?

1 Ответ

1 голос
/ 23 марта 2012

Вам нужно будет перебрать каждую запись, построить динамический запрос и выполнить его, используя sp_executesql.Это должно работать (не проверено):

SELECT *
Into #Temp
  FROM Students.Columns
  WHERE Column_Name Like '%test'

Declare @Column_Name nvarchar(max)
Declare @Table_Name nvarchar(max)
Declare @Sql nvarchar(max)
While (Select Count(*) From #Temp) > 0
Begin
  Select Top 1 @Column_Name = Column_Name, @Table_Name = Table_Name From #Temp
  Set @Sql = N'DELETE FROM ' + @Table_Name + N' WHERE ' + @Column_Name + N' = @delete_key'
  EXECUTE sp_executesql @Sql, N'@delete_key nvarchar(max)', @delete_key = N'del'

  Delete #Temp Where Column_Name = @Column_Name AND Table_Name = @TableName
End
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...