Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Dinamically add column to table from SP  [new]
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]     Ответить | Цитировать Сообщить модератору
 Re: Dinamically add column to table from SP  [new]
Glory
Member

Откуда:
Сообщений: 104751
progproger
Подскажите пожалуйста, можно ли добавить столбец используя процедуру?

можно
А вот обращаться явно к нему в этом же пакете - нельзя. А в другом - можно.
18 дек 14, 11:58    [17015689]     Ответить | Цитировать Сообщить модератору
 Re: Dinamically add column to table from SP  [new]
progproger
Member

Откуда:
Сообщений: 22
Glory,

Спасибо за ответ... Проблема решена(Может и с неправильным подходом). После добавления столбца, можно запустить код с помощи EXEC('Insert into Referrer(...,...,..., ReferrerOldID) Select .....) ')
Если у кого есть получше вариант, отпишитесь пожалуйста
18 дек 14, 12:15    [17015835]     Ответить | Цитировать Сообщить модератору
 Re: Dinamically add column to table from SP  [new]
Glory
Member

Откуда:
Сообщений: 104751
progproger
Если у кого есть получше вариант, отпишитесь пожалуйста

- сразу создавать таблицу нужной структуры
18 дек 14, 12:17    [17015845]     Ответить | Цитировать Сообщить модератору
 Re: Dinamically add column to table from SP  [new]
progproger
Member

Откуда:
Сообщений: 22
Glory,

Какой смысл сразу создавать, если после завершения процедуры мне столбец не понадобится?
18 дек 14, 12:20    [17015875]     Ответить | Цитировать Сообщить модератору
 Re: Dinamically add column to table from SP  [new]
Glory
Member

Откуда:
Сообщений: 104751
progproger
Какой смысл сразу создавать, если после завершения процедуры мне столбец не понадобится?

Желозобетонная логика. Особенно для постоянной таблицы.
18 дек 14, 12:22    [17015893]     Ответить | Цитировать Сообщить модератору
 Re: Dinamically add column to table from SP  [new]
_human
Member

Откуда:
Сообщений: 566
progproger
столбец не понадобится?

А для чего он Вам нужен?)
18 дек 14, 12:30    [17015966]     Ответить | Цитировать Сообщить модератору
 Re: Dinamically add column to table from SP  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8350
Замечательно - добавить столбец для того, чтобы удалить
18 дек 14, 12:40    [17016079]     Ответить | Цитировать Сообщить модератору
 Re: Dinamically add column to table from SP  [new]
progproger
Member

Откуда:
Сообщений: 22
Владислав Колосов,

Да... Не понимаю, что смешного? Я импортирую со старой базы в новую(у которой совсем другая структура)... Причем при импорте мне понадобятся ID со старой базы... После импорта как понимаете старые ID уже не нужны будут
18 дек 14, 12:59    [17016287]     Ответить | Цитировать Сообщить модератору
 Re: Dinamically add column to table from SP  [new]
Glory
Member

Откуда:
Сообщений: 104751
progproger
Не понимаю, что смешного?

Вы свою процедуру один раз в жизни собрались запускать ?
Или вам просто доставляет удовольствие добавлять/удалять поля в таблице при кажом ее запуске ?
18 дек 14, 13:02    [17016325]     Ответить | Цитировать Сообщить модератору
 Re: Dinamically add column to table from SP  [new]
progproger
Member

Откуда:
Сообщений: 22
Glory,

По идее хотелось бы один раз... Но учитывая то, что в новой базе(вместе с проектом) могут быть баги, придется много раз...
И изза того, что старая база будет еще функционировать какой-то период
18 дек 14, 13:07    [17016383]     Ответить | Цитировать Сообщить модератору
 Re: Dinamically add column to table from SP  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31783
progproger
Glory,

По идее хотелось бы один раз... Но учитывая то, что в новой базе(вместе с проектом) могут быть баги, придется много раз...
И изза того, что старая база будет еще функционировать какой-то период
Сохраните информацию, пусть будет колонка постоянно.
18 дек 14, 20:44    [17019345]     Ответить | Цитировать Сообщить модератору
 Re: Dinamically add column to table from SP  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4805
Вам надо просто обертывать запросы EXEC ('...'), если вы делаете DDL, а потом запросы, учитывающие результаты этого DDL. То есть надо, чтобы запрос не был заранее откомпилирован.
18 дек 14, 20:47    [17019353]     Ответить | Цитировать Сообщить модератору
 Re: Dinamically add column to table from SP  [new]
progproger
Member

Откуда:
Сообщений: 22
a_voronin,

Спасибо, я так и поступил. (Упомянуто выше) Думал, может получше будет вариант.
19 дек 14, 11:20    [17021621]     Ответить | Цитировать Сообщить модератору
 Re: Dinamically add column to table from SP  [new]
iap
Member

Откуда: Москва
Сообщений: 47052
progproger
a_voronin,

Спасибо, я так и поступил. (Упомянуто выше) Думал, может получше будет вариант.
Добавить поле один раз и навсегда. И, разумеется, не в процедуре.
Я и сам так делал. Эти поля до сих пор в таблицах. Никому не мешают, кушать не просят.
19 дек 14, 11:24    [17021654]     Ответить | Цитировать Сообщить модератору
 Re: Dinamically add column to table from SP  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31783
progproger
a_voronin,

Спасибо, я так и поступил. (Упомянуто выше) Думал, может получше будет вариант.
Получше есть 2 варианта:
1. Не удалять поле из таблицы, потом пожалеете, что не сохранили эту связь.
2. Если уж решаете удалять, сделать вложенную процедуру, в которой поле можно будет использовать в статическом SQL. Динамический очень полезен, но не надо сувать его куда попало, проблем с ним тоже есть.
19 дек 14, 11:28    [17021686]     Ответить | Цитировать Сообщить модератору
 Re: Dinamically add column to table from SP  [new]
progproger
Member

Откуда:
Сообщений: 22
Всем большое спасибо за советы... Никаких проблем не возникло
23 дек 14, 19:02    [17042073]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить