powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASE 12.5 как создать временную таблицу ?
18 сообщений из 18, страница 1 из 1
ASE 12.5 как создать временную таблицу ?
    #32804002
Фотография Vovaka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как создать временную таблицу по аналогии с create global temporary в ASA ? Чтобы данные жили на время сессии
...
Рейтинг: 0 / 0
ASE 12.5 как создать временную таблицу ?
    #32804096
vooo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1 create table #yourtemptable (fld1 тип1, fld2 тип2.....)

-или -

2 - select fld1,fld2,fldn into
#yourtemptable
from sometable
...
Рейтинг: 0 / 0
ASE 12.5 как создать временную таблицу ?
    #32804111
vooo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vooo1 create table #yourtemptable (fld1 тип1, fld2 тип2.....)

-или -

2 - select fld1,fld2,fldn into
#yourtemptable
from sometable


sorry, попутал т к вопрос стоял о сессии
...
Рейтинг: 0 / 0
ASE 12.5 как создать временную таблицу ?
    #32804193
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По аналогии с MSSQL думаю так:
Код: plaintext
CREATE TABLE ##Table1 (...)
Только в MSSQL например это не будет являться полным аналогом с глобальными временными таблицами ASA по нескольким причинам:
1. Данные такой таблицы будут видеть все сессии.
2. Нужно при ее создании проверять в TempDB что она еще не создана в какой либо другой сессии, иначе получим ошибку, что она уже была создана.
3. Для разделения данных по сессиям в ней необходимо сделать поле SPID, в которой хранить для каждой сессии данные подставляя в это поле @@SPID и по нему фильтруя по сессиям.
4. Если сессия, которая создала эту таблицу дисконектиться, то она удалиться и другие сессии могут забыть, что они там хранили данные.
5. При отключении сессий, хранящих данные в ней, они обнуляться в такой таблице не будут на время жизни этой таблицы (т.е. до дисконекта создавшей ее сессии или же перегрузки сервера).
Исходя из вышеперечисленного, если все вышесказанное по MSSQL применимо к ASE, то мой совет забыть про ASA-шные глобальные времянки и вместо них пользоваться постоянными таблицами, разделяя в них данные по @@SPID и вызывая очистку таких таблиц явно из клиентского приложения или агентов, которые периодически могут проверять наличие в таких таблицах SPID, отсутствующих в списке подключенных сессий.
...
Рейтинг: 0 / 0
ASE 12.5 как создать временную таблицу ?
    #32804222
vooo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По аналогии с MSSQL думаю так:
CREATE TABLE ##Table1 (...)
К сожалению с ASE 12.5 не работал, но в ASE 11.5 нет такой аналогии
В 11.5 работает конструкция create table tempdb..tableName<fld list> И как правильно сказали с данной таблицей нужно работать по SPID. Но опять таки - это ASE 11.5
...
Рейтинг: 0 / 0
ASE 12.5 как создать временную таблицу ?
    #32805144
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) #table -временные таблицы и так живут на время сессии , за некоторыми исключениями, а именно, временные таблицы, созданные в процедурах и триггерах, автоматически удаляются по выходу из них.

2) ##table - временных таблиц (как в MSSQL) в ASE нет.
Напоминаю, что в MSSQL их видят ВСЕ пользователи, и после ухода последней сессии, которая их использовала, таблица автоматически удаляется. Ну или что-то в этом роде.

3) Можно создавать невременную таблицу в tempdb (БЕЗ ДИЕЗА), только при этом ее будут видеть все ползователи и ее надо вручную удалять.

4) Можно использовать концепцию псевдовременной таблицы, при этом в PK таблицы добавляется поле, заполняемое @@spid-ом данной сессии и данная сессия использует только свои записи.

Кстати, в ASE со времен 11.5 в отношении временных таблиц ничего не изменилось, за исключением возможности иметь несколько баз tempdb для разных пользователей.
...
Рейтинг: 0 / 0
ASE 12.5 как создать временную таблицу ?
    #32805299
Фотография Vovaka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv1) #table -временные таблицы и так живут на время сессии , за некоторыми исключениями, а именно, временные таблицы, созданные в процедурах и триггерах, автоматически удаляются по выходу из них.


похоже это то, что нужно
т.е. один раз я создаю таблицу #tname , а потом каждый коннект будет в ней видеть только "свои" данные ?
...
Рейтинг: 0 / 0
ASE 12.5 как создать временную таблицу ?
    #32805417
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vovaka MasterZiv1) #table -временные таблицы и так живут на время сессии , за некоторыми исключениями, а именно, временные таблицы, созданные в процедурах и триггерах, автоматически удаляются по выходу из них.


похоже это то, что нужно
т.е. один раз я создаю таблицу #tname , а потом каждый коннект будет в ней видеть только "свои" данные ?
Нет. Вы каждый раз при коннекте к БД должны создать такую таблицу и она будет жить в пределах видимости, т.е. если она просто создана в коннекте, то она проживет до дисконнекта, если создана в ХП или триггере, то проживет до выхода из тела процедуры.
...
Рейтинг: 0 / 0
ASE 12.5 как создать временную таблицу ?
    #32805421
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дополнение - в ASE и MSSQL в отличие от ASA просто нужно привыкнуть, что некую часть логики должно выполнять клиентское приложение - создавать времянки, вызывать для инициализации нужные ХП и т.д. Вывести все эти действия на уровень самой БД без участия клиентского приложения не получится.
...
Рейтинг: 0 / 0
ASE 12.5 как создать временную таблицу ?
    #32805561
Фотография Vovaka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ASCRUSДополнение - в ASE и MSSQL в отличие от ASA просто нужно привыкнуть, что некую часть логики должно выполнять клиентское приложение - создавать времянки, вызывать для инициализации нужные ХП и т.д. Вывести все эти действия на уровень самой БД без участия клиентского приложения не получится.

Да уж, не на том начинали :)

Это как будто с хорошего джипа на БТР пересесть, вроде помощней, но в остальном никакому сравнению не поддается
...
Рейтинг: 0 / 0
ASE 12.5 как создать временную таблицу ?
    #32806555
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vovaka MasterZiv1) #table -временные таблицы и так живут на время сессии , за некоторыми исключениями, а именно, временные таблицы, созданные в процедурах и триггерах, автоматически удаляются по выходу из них.


похоже это то, что нужно
т.е. один раз я создаю таблицу #tname , а потом каждый коннект будет в ней видеть только "свои" данные ?

нет. просто у каждого будет своя таблица #tname .
...
Рейтинг: 0 / 0
ASE 12.5 как создать временную таблицу ?
    #32837089
Diaflex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv
2) ##table - временных таблиц (как в MSSQL) в ASE нет.


Выполнил на Sybase ASE 12.0.0.4 ...

create table ##tmp(f1 int)
insert into ##tmp select 1
select * from ##tmp
drop table ##tmp

... и получил 1. Почему ты решил что в ASE их нет???
...
Рейтинг: 0 / 0
ASE 12.5 как создать временную таблицу ?
    #32837716
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если открыть Sybase Central, то после создания #TNAME можно увидеть в в базе данных tempdb что за таблица была создана.(и какое у нее реальное имя)
...
Рейтинг: 0 / 0
ASE 12.5 как создать временную таблицу ?
    #32837728
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
use data
go

drop procedure tmp
go

create procedure tmp as
begin
	create table ##TEST (id int)
	insert into ##TEST values ( 1 )
	select * from ##TEST
end
go

tmp
go

select * from ##TEST
go


Код: plaintext
1.
2.
3.
4.
5.
( 1  row affected)
(return status =  0 )
Server Message:  Number   208 , Severity   16 
Server 'pnsybase', Line  1 :
##TEST not found. Specify owner.objectname or use sp_help to check whether the object exists (sp_help may produce lots of output). 


## -в Sybase ASE совсе не то что в MS :))
...
Рейтинг: 0 / 0
ASE 12.5 как создать временную таблицу ?
    #32837844
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Diaflex MasterZiv
2) ##table - временных таблиц (как в MSSQL) в ASE нет.


Выполнил на Sybase ASE 12.0.0.4 ...

create table ##tmp(f1 int)
insert into ##tmp select 1
select * from ##tmp
drop table ##tmp

... и получил 1. Почему ты решил что в ASE их нет???

Да ты можешь свою временную таблицу хоть #####a назвать, но она от этого вести себя по-другому не станет.
...
Рейтинг: 0 / 0
ASE 12.5 как создать временную таблицу ?
    #32837857
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пробуем раз
...
Рейтинг: 0 / 0
ASE 12.5 как создать временную таблицу ?
    #32837863
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пробуем два (из первого соединения)
Код: plaintext
1.
2.
3.
4.
5.
6.
a1  |
----|
 1971 |

  1  row(s).


Пробуем три (из второго соединения)
Код: plaintext
1.
2.
3.
Server xxx Msg  208 , Level  16 , State  1 , Line  1 
##test1 not found. Specify owner.objectname or use sp_help to check whether the object exists (sp_help may produce lots of output).


Что и требовалось доказать, это не работает как в MSSQLServer.
...
Рейтинг: 0 / 0
ASE 12.5 как создать временную таблицу ?
    #32837871
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Напоминаю, что в MSSQL
MSDN
Global temporary tables have two number signs (##) as the first characters of their names; they are visible to any user after they are created ; and they are deleted when all users referencing the table disconnect from SQL Server.
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASE 12.5 как создать временную таблицу ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]