![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
динамический use [MSSQL]
Gklbery © (2008-01-23 16:52:00)Здравствуйте! Как динамически выполнить следующее:
declare @SQL varchar(8000),@dbName varchar(30)
set @dbName='DBName1'
...
set @SQL='use '+@dbName
exec @SQL
....-- длинный-длинный скрипт с всякими "GO"
/*в одну строку @SQL поместить нельзя, dbName может меняться*/
sniknik (2008-01-24 00:28:00) [1]> прямо прописать названия БД1 и БД2 нельзя!
если нельзя, но очень хочется, то можно!
sniknik (2008-01-24 00:24:00) [2]> если есть ответ на МОЙ ВОПРОС
ответ есть, но не положительный... так сделать нельзя.
хотя то, что ты делаешь, сделать всетаки можно, по другому (хотя бы упомянутым составлением динамического скрипта в скрипте же т.е. через задницу), или еще каким вариантом, но это будет уже, не ответом на ТВОЙ ВОПРОС.
Gklbery (2008-01-23 22:05:00) [3]зачем: есть 2 больших сборных скрипта , один обновляет БД1, другой БД2, в отдельных процедурах эти базы пересекаются (н-р, в Скрипт1 добавлены поля в уже существующие таблицы БД1, а в Скрипте 2 есть процедуры, ссылающиееся на эти НОВЫЕ поля и наоборт). Цель такая
прямо прописать названия БД1 и БД2 нельзя!
меня интересует только каким образом динамически юзнуть базу, есть подозрение, что существует sql-процедура, позволяющая это сделать, если есть ответ на МОЙ ВОПРОС, пожалуйста, напишите
sniknik (2008-01-23 19:47:00) [4]> разве нет?
> с всякими "GO"
не пройдет. что так что "по авторски".
и вообще GO это признак завершить команду и начать новую только по завершению предыдущей части.
хотя... если это передается в isql... но тогда какая разница в какое место имя таблицы подставлять? и зачем подставлять в одно место, а после в одном скрипте генерить еще один динамический скрипт? не понимаю.
clickmaker (2008-01-23 19:29:00) [5]так можно же сначала exec use, а потом уже нормально остальной скрипт, разве нет?
Gklbery (2008-01-23 19:22:00) [6]т.е., в чем проблема? так работать не будет. будет работать только так:
...
set @SQL='use '+@dbName+@SQL1
exec @SQL
а у меня SQL1 - это скрипт, который через exec не запустишь. Поэтому и вопрос, как динамически сделать use базе данныхс именем, которое может меняться и далее присутствовать в @SQL1 наравне с use др. БД.
clickmaker (2008-01-23 18:31:00) [7]а в чем проблема-то?