Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.01.14;
Скачать: [xml.tar.bz2];

Вниз

Можно ли работать с временной таблицей (напр. #tmp_tab_name ) через Ttable?   Найти похожие ветки 

 
Nest   (2001-11-29 12:32) [0]

Когда в св-ве Table1.TableName значение,начинающееся с #(т.е. временная таблица), при попытке table1.Createtable ругается "Инвалид табле наим", а при Table1.open -
"table does not exist,
Ivalid object name "#view1""
. Хотя в этом сеансе таблица точно создана через Query(кстати с его помощью выбирается)

Несудьба ?


 
sudiv   (2001-11-29 13:29) [1]

Похоже на то.


 
Nest   (2001-11-29 14:21) [2]

Как бы узнать по-точнее?
Уж если здесь люди не знают...


 
asafr   (2001-11-29 14:50) [3]

Брось TTable - пользуйся TQuery. Все получится.


 
sudiv   (2001-11-29 15:06) [4]

Пробовал,
действительно TTable не "берет" таблицы названия которых c #.
Ничего уж не поделаешь.
А поменять название таблицы нельзя ?
Например tmp3222~.<что-то>.


 
Nest   (2001-11-29 15:27) [5]

2sudiv ©
Видишь ли, временные таблицы - это не просто таблицы,которые ты создаёшь,юзаешь а потом мочишь.
В МССКЛ это отдельный вид и они серьёзно отличаются.
1.Они создаются для сеанса,и когда подключение к базе разрывается(штатно ИЛ НЕ ШТАТНО) то не надо заботиться об их уничтожении- за это отвечает сервер.

2.Мне временные таблицы необходимы для формирования НД,отображаемого
пользователю при просмотре-
А теперь представь, что пользователь не сможет просмотреть данные из базы если у него есть только права на просмотр (врем.таблицу та нельзя будет создать)!!!!!!!!!!!!!!!!
А таблицу с # создать можно всегда- они по-моему создаются даже в отдельной базе "TeMP"

3.Оператор
SELECT * INTO temp_table_name FROM source_table_name
Обычно не срабатывает, если не открыты специфические права(опции базы),которые обычно закрыты.
однако
SELECT * INTO #temp_table_name FROM source_table_name
сработает всегда.

может где соврал-не спец я по МССКЛ.

Ну, в общем, поменять название таблицы нельзя.


 
sudiv   (2001-11-29 15:33) [6]

М-да, я тем более не спец.
Тогда я поднимаю руки.
Не знаю.


 
Nest   (2001-11-29 15:36) [7]

Буду пытаться заменить Ттабле на Ткьюери.
%(


 
Ега   (2001-11-30 09:36) [8]

Nest, а временные таблицы точно автоматически удаляются при закрытии сеанса? По-моему нет, т.к. я сколько раз уже натыкался: делаешь Select into, а тебе Object exists


 
Nest   (2001-12-10 11:24) [9]

ДАДАДА!!!
Но сеанс действительно должен быть завершён.
Если ты работаешь в интерактиве- то например перезапустить клиента, а если через дельфи - то недостаточно просто закрыть таблицу. Надо делать connection:=false толи у Database толи у Session.
Но удаляются точно!


 
Roma   (2001-12-10 11:56) [10]

> Ега (30.11.01 09:36)

Если select into - это в плане временная будет таблица или нет еще ничего не значит. Чтобы создаваемая таблица была временной, необходимо при создании ( select into - тоже создание таблицы) указывать имя таблицы, начинающееся на #.

Временная таблица создается в tempdb с именем не совсем тем, что вы укажете при ее создании; например, если укажете #mytemptable, создастся таблица с именем #mytemptable плюс длиннючее идентифицирующее окончание. И доступна она будет только для того пользователя и того сеанса, при котором была создана.

2Nest>

Может, стоит перенести часть работы в хранимую процедуру... И еще: правильно делаешь, что прислушиваешься к asafr и переходишь на TQuery, юзать MSSQL с помощью TTable - "это же не наш метод"...


 
NewComer   (2001-12-10 12:54) [11]

Попробуй так.
у TDataBase есть метод Execute....
DataBase1.Execute("Create table #tblTemp(a int, b varchar(30))"); и потом по имени обращайся к этой табличке.. вообще то временыые таблички видны сессии, которая их создала.
У меня все заработало когда юзал TAdoConnection.Execute... вроде и сча должно...


 
Nest   (2001-12-10 16:21) [12]

2Roma
Всё верно.

2Nest
За совета конечно спасибо, но:
1.В Д3 DataBase1.Execute работать не хочет
2.Проблема не в том чтоб создать врем. таблицу - это можно и запросом сделать.
Проблема потом эту таблицу открыть с пом. Ттабле.
Но, видать, вправду такие попытки обречены...


 
Nest   (2001-12-10 16:23) [13]

Да блин, второй абзац адресован NewComer ©.


 
NewComer   (2001-12-10 17:05) [14]

Я конечно не специалист, но Несколько мыслей:
Вообще через БДЕ работать с серваком.. енто как то ракообразно.
DataBase.Execute должен сработать(ежели ты запросом создашь временную табличку.. то точно ее потом не увидишь), поковыряйся что ли.. DataBase.FlushSchemaCache - посмотри.. мож сработает после него...
вообще.. поныкайся с глобальными временными табличками.. посмотри, их то видно? И вообше, локальную временную табличку должна создать сессия. т.е. коннект(в данном случае TDataBase).. если например создать ее в SP то только эта SP ее и видит.. и потом уничтожит... не знаю как получше то выразиться.. :-( Ну и конечно лучше отказаться от TTable в пользу TQuery..



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2002.01.14;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.005 c
4-42600
wHammer
2001-11-13 16:16
2002.01.14
Мастера, помогите в поиске решения!


3-42391
shurik
2001-12-13 16:53
2002.01.14
кодировка


1-42497
Victor
2001-12-25 19:40
2002.01.14
ColorDialog


7-42585
fsp
2001-09-29 21:15
2002.01.14
sender:Tobject


1-42445
Андре
2001-12-24 15:50
2002.01.14
Вопрос про компоненты





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский