Форум: "Базы";
Текущий архив: 2002.10.17;
Скачать: [xml.tar.bz2];
ВнизВременные таблицы Найти похожие ветки
← →
Picco (2002-09-25 14:59) [0]В хр.процедуре создаю при первом селекте временную таблицу
в ходе процедуры добавляю столбцы и пытаюсь их апдейтить
в результате сообщение "нет такого столбца" ????
Если без апдейта сделать выборку по "налету" созданным
столбцам то запрос их видит !!!!
Может кто сможет объяснить ?
Заранее благодарен
← →
Sedunov Vitaly (2002-09-25 17:01) [1]А как временную таблицу создаешь create или select into?
← →
Sedunov Vitaly (2002-09-25 17:26) [2]Да, похоже, update со вновь созданными полями во временной таблице не проходит. Надо будет с этим покопаться... Но есть вариант решения. Добавлять новую колонку, создавать при помощи select into новую временную таблицу после этого ее update"ить. Тогда работает. А вообще на практике не сталкивался с необходимостью добавлять поля во временные таблицы. Для чего это нужно? Може алгоритм переделать?
← →
Picco (2002-09-25 18:28) [3]Да варианты конечно придумать можно,просто удобно было
какой-либо сложный отчет планировать именно так (мне по краней мере)т.е добавлять необходимые столбцы по мере неоходимости.
Непонятна ситуация являются ли они реальными объектами базы данных которые во время транзакции нельзя менять ???
← →
Владислав (2002-09-26 06:31) [4]Я делал так. После добавления новых столбцов, из существующей временной таблицы выбирал в новую временную таблицу (с другим именем) все записи оператором SELECT ... INTO ...
Дальше уже можно использовать добавленные столбцы.
Вот пример кода:
--Это типа создание таблицы :)
SELECT RIGHT("0"+LTRIM(RTRIM(SUBSTRING(PA11004, 38, 2))),2) ROOM, CONVERT(DATETIME, SUBSTRING(PA11005, 34, 2)+"."+SUBSTRING(PA11005, 36, 2)+"."+SUBSTRING(PA11005, 38, 2),4) TRANSF_DATE, SUBSTRING(PA11005, 42, 1) NEW_HIRE, PA11001, PA11003
INTO #transfr_all_tmp
FROM PA110100
WHERE 1 = 2
--Это добавление столбца. После этого использовать столбец ID нельзя.
ALTER TABLE #transfr_all_tmp ADD ID INT IDENTITY(1,1)
--Это выборка записей, удовлетворяющих условию. И после этого использовать ID не получилось.
INSERT INTO #transfr_all_tmp (ROOM, TRANSF_DATE, NEW_HIRE, PA11001, PA11003)
SELECT RIGHT("0"+LTRIM(RTRIM(SUBSTRING(PA11004, 38, 2))),2) ROOM, CONVERT(DATETIME, SUBSTRING(PA11005, 34, 2)+"."+SUBSTRING(PA11005, 36, 2)+"."+SUBSTRING(PA11005, 38, 2),4) TRANSF_DATE, SUBSTRING(PA11005, 42, 1) NEW_HIRE, PA11001, PA11003
FROM PA110100
WHERE PA11002 = "56" AND LEN(RTRIM(LTRIM(PA11001))) > 0
ORDER BY PA11001, TRANSF_DATE
--А это выборка из предыдущей временной таблицы в последующую :). Вот после этой выборки использовать столбец ID уже можно.
SELECT *
INTO #transfr_all
FROM #transfr_all_tmp
ORDER BY PA11001, TRANSF_DATE
--Ну и т.д. и т.п. :)))
Удачи.
← →
Picco (2002-09-26 09:22) [5]спасибо,неплохая идея
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.10.17;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.008 c