powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / GLOBAL TEMPORARY в SQL
4 сообщений из 4, страница 1 из 1
GLOBAL TEMPORARY в SQL
    #36063264
Ivan.Kokov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коллеги, подскажите, в чем я не прав:

В портале последовательно выполняю запросы

1. CREATE GLOBAL TEMPORARY TABLE XXX (
CODE INT NOT NULL,
NAME CHAR(30) NOT NULL
)

2. INSERT into XXX (CODE,NAME) VALUES (1,'QWERTY')

3. SELECT * FROM XXX

SQLCODE=0 во всех трех запросах, но после 3-го получаю 0 записей.

Если те же запросы выполнить без GLOBAL TEMPORARY, то запись в таблице ХХХ получаем
...
Рейтинг: 0 / 0
GLOBAL TEMPORARY в SQL
    #36063750
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
все работает
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
>>CREATE GLOBAL TEMPORARY TABLE XXX (
( 1 )>>CODE INT NOT NULL,
( 2 )>>NAME CHAR( 30 ) NOT NULL
( 3 )>>)
( 4 )>>goSQLCODE= 0  ROWCOUNT= 0 
>>
>>INSERT into XXX (CODE,NAME) VALUES ( 1 ,'QWERTY')
( 1 )>>goSQLCODE= 0  ROWCOUNT= 1 
>>SELECT * FROM XXX
( 1 )>>go
 1        QWERTY

USER>w $zv
Cache for Windows (x86- 32 )  2008 . 2  DS (Build  615 ) Thu Dec  11   2008   20 : 34 : 30  EST


и так тоже

Код: plaintext
1.
2.
3.
4.
 &sql(CREATE GLOBAL TEMPORARY TABLE XXX (CODE INT NOT NULL,NAME CHAR( 30 ) NOT NULL))	
 &sql(INSERT into XXX (CODE,NAME) VALUES ( 1 ,'QWERTY'))
 &sql(SELECT count(*) into :cnt FROM XXX)
 zw cnt
...
Рейтинг: 0 / 0
GLOBAL TEMPORARY в SQL
    #36064148
Ivan.Kokov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DAiMor,

Версия:
Cache for Windows (x86-32) 2008.2 (Build 526) Fri Oct 17 2008 02:28:33 EDT

После выполнения вашего кода в программе написал строки

SET rset=##class(%ResultSet).%New("%DynamicQuery:SQL")
SET sc=rset.Prepare("SELECT * FROM SQLUser.XXX")
SET sc=rset.Execute()
WHILE rset.Next() {
WRITE rset.Data("NAME"),", ",rset.Data("CODE"),!
}
В терминале получил:
TEST>do ##class(Books.TempT).test()
QWERTY, 1
QWERTY, 1

В портале же не могу ничего сделать, ибо на запрос :
SELECT * FROM SQLUser.XXX
выдается
SQLCODE: 100 Количество строк: 1 Быстродействие: 0.001 Секунд 12 глобальных ссылок

# Aggregate_1
1 0
Завершено

Видимо, дело все же в версии. Попробую поставить другой инстанс с 2009.1
...
Рейтинг: 0 / 0
GLOBAL TEMPORARY в SQL
    #36064176
Ivan.Kokov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне ответил Олег Оленин:

Ситуация с global temporary table такая (описание в http://localhost:57772/csp/docbook/DocBook.UI.Page.cls?KEY=RSQL_createtable#RSQL_createtable_temp ):
- определение такой таблицы (CREATE TABLE) доступно всем
- данные, которые вставляются в такую таблицу, храняться в памяти конкретного процесса, который эти данные туда вставил (точнее в process global globals, под памятью тут понимается не обязательно ОЗУ)
- поэтому при запросах видны только данные, которые были вставлены в рамках процесса.
В случае портала HTTP запросы обрабатываются несколькими процессами (так устроены CSP приложения, при желании можно устроить "залипание" HTTP сессии на один процесс). Поэтому предсказать, что в следующий раз ваш запрос будет выполнен против того же процесса, невозможно.


Если работать в одном процессе, то все хорошо.

Вроде теперь все встало на свои места,
Спасибо
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / GLOBAL TEMPORARY в SQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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