![]() |
|
Модераторы: Akina |
![]()
|
|
| dimych83 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 81 Регистрация: 21.3.2007 Где: Красноярск Репутация: нет Всего: нет |
Добрый день!
У меня есть периодическая задача. 1 шаг. Выполняется хранимая процедура, которая вставляет одну строку в таблицу №1. Эта таблица, помимо всего, содержит поле id_t (авт. инкриментируется при добавлении новой записи). 2 шаг. Выполняется DTS пакет, который из Excel файла импортирует данные в таблицу №2. В таблице №2 есть поле id_task, связанное с полем id_t табл. №1. Так вот, надо чтобы при выполнении шага 2 поле id_task принимало значение, которое устанавливается в шаге 1. Пример: Шаг 1. В табл. 1 заносится запись (значение id_t устанавливается автоматичсеки): id_t description 100 test Шаг 2. В табл. 2 импортируются записи (значение id_task должно устанавливаться в момент импорта и должно совпадать со значением id_t на шаге 1): id id_task name 1 100 abc 2 100 abc 3 100 abc Помогите пожалуйста! Совсем уже замучался. Это сообщение отредактировал(а) dimych83 - 4.3.2008, 10:43 |
|||
|
||||
| ТоляМБА |
|
|||
![]() Котэ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1607 Регистрация: 15.12.2004 Репутация: нет Всего: 252 |
А что нельзя на втором шаге импортировать во временную таблицу, потом запускать хранимку, в которой присваивать переменной значение id_t, вставлять через Insert into ... Select во вторую таблицу, а затем убивать временную?
|
|||
|
||||
| dimych83 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 81 Регистрация: 21.3.2007 Где: Красноярск Репутация: нет Всего: нет |
Во, спасибо за свежую мысль! |
|||
|
||||
| Itsys |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1338 Регистрация: 21.1.2008 Где: г. Москва Репутация: 1 Всего: 34 |
Вообщето можно узнать значение инкремента:
|
|||
|
||||
| dimych83 |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 81 Регистрация: 21.3.2007 Где: Красноярск Репутация: нет Всего: нет |
Тогда еще вопрос... Вставка строки производится на 1 шаге, на 2 шаге выполняется DTS пакет. Сохраниться ли значение @@IDENTITY при выполнении 2 шага? Если нет, то как мне его получить внутри пакета? Или может можно как-нибудь передать в него значение? |
||||
|
|||||
| SharedNoob |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 25.6.2007 Где: UA Репутация: 2 Всего: 5 |
Может я чего то не пойму, но все же ? зачем вам проставлять это поле во время выполнения ДТС пакета ?
не проще ли сделить так как предложил ТоляМБА ? То есть : 1) Добавляем запись в таблицу табл. 1 2) Выполняем импорт данных через дтс пакет в (условно)ВРЕМЕННУЮ таблицу TMP_табл2. 3) Запускаем на выполнение хранимую процедуру в коде которой будет примерно такое:
То есть данные импортируем во временную таблицу, а из нее в реальную переносим по средствам хранимой процедуры с оператором insert. здается мне что все просто, зачем завязываться на некие глобальные переменные аля @@IDENTITY не понимаю. |
|||
|
||||
| dimych83 |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 81 Регистрация: 21.3.2007 Где: Красноярск Репутация: нет Всего: нет |
Все сделал. Только зачем нужна ХП с insert into? Я импортирую данные во временную таблицу, далее выполняю процедуру в которой сначала получаю макс. ID из таблицы 1, то есть ID с которым вставилась строка на 1 шаге. И делаю update всем записям временной таблицы. Далее, также в пакете DTS, делаю импорт из временной таблицы в реальную. |
||||
|
|||||
| SharedNoob |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 25.6.2007 Где: UA Репутация: 2 Всего: 5 |
p.s. И еще ко всему этому, импорт данных из файла (к примеру DBF) можно просто выполнять в хранимой процедуре без использования ДТС. Это сообщение отредактировал(а) SharedNoob - 6.3.2008, 09:33 |
|||
|
||||
![]()
|
| Правила форума "MS SQL" | |
|
|
Запрещается! Публиковать ссылки и обсуждать взлом чего бы то ни было.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MS SQL Server | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |