Как правильно построить SQL2008 запрос когда много баз?
Есть куча баз с очень длинными названиями, и во всех них нужно изменить поле в одной и той же табличке, есть простой запрос но приходиться постоянно выбирать базу, как реализовать этот запрос что бы он заменил во всех БД
Можно разъяснить если не сложно, а то я юзер, я примерно понимаю как нужно сделать, нужно сделать выборку и в этой выборке выбрать табличку и апдейтить поле, но как это уложить правильно SQL запросе не понимаю, постоянно какие то ошибки
Для каждой базы нужно делать отдельный запрос. Пример буду писать для MS SQL, для вашей субд код может кардинально отличаться.
//делаем курсор по списку БД. Убираем системные и ненужные нам базы, либо наоборот, указываем нужные. Далее в курсоре генерим запрос и выполняем
declare c cursor for
select name from sys.databases where name not in ('master','tempdb','model','msdb')
declare @name varchar(1000), @sql varchar(1000)
open c
fetch next from c into @name
while @@fetch_status=0
sp_executesql('Update ' + name + '.dbo.Table1 set Field1 = 1' )
close c
deallocate c
declare c cursor for
select name from sys.databases where name not in ('master','tempdb','model','msdb')
declare @name varchar(1000), @sql varchar(1000)
open c
fetch next from c into @name
while @@fetch_status=0
begin
sp_executesql('Update ' + name + '.dbo.Table1 set Field1 = 1' )
fetch next from c into @name
end
close c
deallocate c
Fetch_status возвращает 0, пока fetch не пройдет по всем записям в курсоре