Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
progproger Member Откуда: Сообщений: 22 |
Здравствуйте. Подскажите пожалуйста, можно ли добавить столбец используя процедуру? Например ALTER TABLE Referrer ADD ReferrerOldID INT NULL DEFAULT(NULL); INSERT INTO Referrer(-- ID -- this column value is auto-generated Title,Forename,Surname,OrganisationName,PropNumber,Street,Village, CountyID,CityID,Postcode,LandlineTelNo,Mobile,Email,FaxNo, CentreID,ReferrerKey,ReferrerOldID) К сожалению выкидывает ошибку: "Invalid column name 'ReferrerOldID' " Мне нужно в этой же процедуре использовать ReferrerOldID и потом стереть с таблицы. Спасибо |
18 дек 14, 11:57 [17015675] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104751 |
можно А вот обращаться явно к нему в этом же пакете - нельзя. А в другом - можно. |
||
18 дек 14, 11:58 [17015689] Ответить | Цитировать Сообщить модератору |
progproger Member Откуда: Сообщений: 22 |
Glory, Спасибо за ответ... Проблема решена(Может и с неправильным подходом). После добавления столбца, можно запустить код с помощи EXEC('Insert into Referrer(...,...,..., ReferrerOldID) Select .....) ') Если у кого есть получше вариант, отпишитесь пожалуйста |
18 дек 14, 12:15 [17015835] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104751 |
- сразу создавать таблицу нужной структуры |
||
18 дек 14, 12:17 [17015845] Ответить | Цитировать Сообщить модератору |
progproger Member Откуда: Сообщений: 22 |
Glory, Какой смысл сразу создавать, если после завершения процедуры мне столбец не понадобится? |
18 дек 14, 12:20 [17015875] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104751 |
Желозобетонная логика. Особенно для постоянной таблицы. |
||
18 дек 14, 12:22 [17015893] Ответить | Цитировать Сообщить модератору |
_human Member Откуда: Сообщений: 566 |
А для чего он Вам нужен?) |
||
18 дек 14, 12:30 [17015966] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8350 |
Замечательно - добавить столбец для того, чтобы удалить ![]() |
18 дек 14, 12:40 [17016079] Ответить | Цитировать Сообщить модератору |
progproger Member Откуда: Сообщений: 22 |
Владислав Колосов, Да... Не понимаю, что смешного? Я импортирую со старой базы в новую(у которой совсем другая структура)... Причем при импорте мне понадобятся ID со старой базы... После импорта как понимаете старые ID уже не нужны будут |
18 дек 14, 12:59 [17016287] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104751 |
Вы свою процедуру один раз в жизни собрались запускать ? Или вам просто доставляет удовольствие добавлять/удалять поля в таблице при кажом ее запуске ? |
||
18 дек 14, 13:02 [17016325] Ответить | Цитировать Сообщить модератору |
progproger Member Откуда: Сообщений: 22 |
Glory, По идее хотелось бы один раз... Но учитывая то, что в новой базе(вместе с проектом) могут быть баги, придется много раз... И изза того, что старая база будет еще функционировать какой-то период |
18 дек 14, 13:07 [17016383] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31783 |
|
||
18 дек 14, 20:44 [17019345] Ответить | Цитировать Сообщить модератору |
a_voronin Member Откуда: Москва Сообщений: 4805 |
Вам надо просто обертывать запросы EXEC ('...'), если вы делаете DDL, а потом запросы, учитывающие результаты этого DDL. То есть надо, чтобы запрос не был заранее откомпилирован. |
18 дек 14, 20:47 [17019353] Ответить | Цитировать Сообщить модератору |
progproger Member Откуда: Сообщений: 22 |
a_voronin, Спасибо, я так и поступил. (Упомянуто выше) Думал, может получше будет вариант. |
19 дек 14, 11:20 [17021621] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47052 |
Я и сам так делал. Эти поля до сих пор в таблицах. Никому не мешают, кушать не просят. |
||
19 дек 14, 11:24 [17021654] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31783 |
1. Не удалять поле из таблицы, потом пожалеете, что не сохранили эту связь. 2. Если уж решаете удалять, сделать вложенную процедуру, в которой поле можно будет использовать в статическом SQL. Динамический очень полезен, но не надо сувать его куда попало, проблем с ним тоже есть. |
||
19 дек 14, 11:28 [17021686] Ответить | Цитировать Сообщить модератору |
progproger Member Откуда: Сообщений: 22 |
Всем большое спасибо за советы... Никаких проблем не возникло |
23 дек 14, 19:02 [17042073] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |