Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.10.17;
Скачать: CL | DM;

Вниз

Временные таблицы   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.015 c
1-56162
KidMan
2002-10-01 23:47
2002.10.17
Проблема с EDBEditError :(((


1-56044
Novichek
2002-10-07 02:12
2002.10.17
ListBox : можно ли отдельные строки выделить шрифтом?


1-56107
ESV
2002-10-08 15:33
2002.10.17
Модальная форма из DLL


14-56278
Undert
2002-09-20 23:21
2002.10.17
Владельцам сайтов на Народе.ру посвящается ...


3-55999
Atamali Mamedov
2002-09-24 12:27
2002.10.17
BDE excell