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

Вниз

размножение сессий на сервере БД   Найти похожие ветки 

 
denis24   (2004-10-06 17:57) [0]

Конекчусь к серверу
создаю временную таблицу с пом query (create table....)
Потом , при подготовке даныых для insert into.... эим же query,
вызываю storedproc где получаю нужное мне значение,закрываю этот storedproc
Заполняю нужные параметры запроса,пытаюсь выполнить- пишет таблица(которую я создал в начале ) не существует.
На дебугере сервера видно что создание табл,хранимая процедура выполняется в одной сессии.А как только вызываю insert into .....в эту времен табл созд вторая сессия.
Что посоветуете?


 
denis24   (2004-10-07 09:19) [1]

Неужели никто не знает?


 
Sergey13 ©   (2004-10-07 09:24) [2]

>Что посоветуете?
Может не создавать временных таблиц в программе(если сервер не поддерживает нормальных временных таблиц)? Уж если шибко надо, то создать постоянную и использовать как временную - например писать туда, помимо прочего, какой нить идентификатор сессии.


 
Nikolay M. ©   (2004-10-07 09:37) [3]


> Sergey13 ©   (07.10.04 09:24) [2]

А что в твоем понимании нормальные временные таблицы?


> denis24

Что мешает выполнить все в одном батче? И создание ВТ, и вызов ХП, и заполнение ВТ?


 
Sergey13 ©   (2004-10-07 09:43) [4]

2[3] Nikolay M. ©   (07.10.04 09:37)
>А что в твоем понимании нормальные временные таблицы?
Например как в Оракле. Создается постоянная таблица со статусом "временная". Данные там могут жраниться либо в течении сессии либо в течении транзакции. Кочилась сессия/транзакция данные удаляются автоматически сервером. Для прикладной программы это обычная таблица.


 
Nikolay M. ©   (2004-10-07 09:55) [5]

В МС СКЛ временная #-таблица тоже существует в рамках сессии.


 
denis24   (2004-10-07 09:56) [6]

Сервер норамальный- Sybase.Временная таблица создается на время сесси,потом автом.удаляется.
Что такое батч?


 
Sergey13 ©   (2004-10-07 10:01) [7]

2[5] Nikolay M. ©   (07.10.04 09:55)
Ну и? Я не понял - ты мне возражаешь или просто интересуешься? 8-) Я не знаком ни с МС СКЛ, ни с сайбейсом, поэтому и рекомендация была самого общего плана, которая будет работать везде.


 
Nikolay M. ©   (2004-10-07 11:42) [8]


> Sergey13 ©   (07.10.04 10:01) [7]

Интересуюсь, что такое "нормальные" ВТ. Выяснилось, что они мало чем отличаются от ВТ в МС СКЛ.


> Что такое батч?

В БОЛ.


 
denis24   (2004-10-08 11:53) [9]

Может я не правильно делаю запросы и вызываю хранимаю процедуру?

query1.sql.add(" if exists (select 1  from  tempdb..sysobjects  where  id = object_id(""#_MyTemp_1"") and type = ""U"") DROP TABLE #_MyTemp_1");
query1.ExecSQL;

query1.close;
query1.sql.Clear;
query1.sql.Add("create table #_MyTemp_1(bin char(16),sc char(14),ost_sc numeric (17,2))");//,egf_cpnc char(6))");
query1.ExecSQL;

query1.Close;
       query1.SQL.Clear;
       query1.sqL.Add("INSERT INTO #_MyTemp_1");
       query1.sql.add(" (bin,sc,ost_sc)");
       query1.SQL.Add(" VALUES (:bin,:sc,:ost_sc)");
       query1.Params.Clear;
       P1 := TParam.Create(query1.Params, ptInput);
       P2 := TParam.Create(query1.Params, ptInput);
       P3 := TParam.Create(query1.Params, ptInput);
       query1.Params[0].Name := "bin";
       query1.Params[1].Name := "sc";
       query1.Params[2].Name := "ost_sc";
         .
         .

query1.UnPrepare ;
query1.ParamByname("bin").Asstring:=n;
query1.ParamByname("sc").Asstring:=Table2.fieldbyname("sc").AsString;
query1.ParamByname("ost_sc").AsFloat:=Get_ost(table2.fieldbyname("sc").AsString);
query1.prepare;
query1.ExecSQL;->вот тут и создается вторая сессия в которой уже нет вышесозданной временной таблицы!!!!

А вот и сам GET_OST

function  Get_ost (acc:String ) :single ;
begin
StoredProc1.UnPrepare;
toredProc1.ParamByName("@rdate").AsString:=FormatDateTime("yyyy-mm-dd",now());
StoredProc1.ParamByName("@acc").AsString:=acc;
StoredProc1.ParamByName("@fl_ost").AsString:="O";
StoredProc1.Prepare;
try
StoredProc1.ExecProc;
finally
begin
result:=StoredProc1.Parambyname("@saldo").Asfloat;
redProc1.close;end;
end;
end;


 
Silver John   (2004-10-09 14:46) [10]

Закатай все операции в одну хранимую процедуру


 
Silver John   (2004-10-09 14:51) [11]

ИМХО здесь можно вообще отказаться от временной таблицы


 
denis24   (2004-10-12 09:21) [12]

>Silver John [11]
Как?


 
xShadow ©   (2004-10-12 09:37) [13]

А у тебя создаётся TSession и TDataBase до обращения к БД до этого всего ?


 
Pul   (2004-10-12 11:22) [14]

После создания временной таблицы выполни COMMIT


 
Silver John   (2004-10-12 12:39) [15]

Если объяснишь суть задачи, напишу тебе сохраненку, как надумаешь, стучись на 196470609


 
DiamondShark ©   (2004-10-12 12:46) [16]

Транзакцию открывай.
По умолчанию режим autocommit, так что каждый оператор -- это отдельная транзакция.


 
denis24   (2004-10-12 16:57) [17]

To pul
query1.sql.add("commit");
query1.execsql;
не помогает



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

Текущий архив: 2004.11.14;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.042 c
4-1096801148
SergeyM
2004-10-03 14:59
2004.11.14
Сообщение в HEX формате


9-1090363698
Profi
2004-07-21 02:48
2004.11.14
DirectDraw


1-1098891203
Lexx3D
2004-10-27 19:33
2004.11.14
Dll


3-1098090555
Layner
2004-10-18 13:09
2004.11.14
Помогите парсировать SQL запрос


3-1097584335
pok
2004-10-12 16:32
2004.11.14
Проблема при создании dbase ||| table





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