Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
3-55959
Старик
2002-09-23 16:36
2002.10.17
SQL


1-56165
Kacnep
2002-10-07 12:36
2002.10.17
Расчет TRect для текста


3-55982
asd2002
2002-09-25 16:15
2002.10.17
Cannot transliterate character при restore


1-56074
AM
2002-10-08 16:56
2002.10.17
Что то непонятное с Random!!!


1-56215
kofman
2002-10-06 15:50
2002.10.17
Из-за чего может появлятся окно с надписью





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский