Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

передача указателя [D5, IB6.x]


matt ©   (2004-08-21 15:23:00) 

Доброго времени стуток!
Подскажите как передать указатель через Stored Procedure в UDF?


kaif   (2004-08-23 03:16:00) [1]

Заноси данные как BLOB, если важна именно скорость занесения.
А потом при чтении данных пусть какая-нибудь UDF уже их разбирает. Это как бы альтернативная идея. Передать указатель не получится. Даже если получится каким-нибудь особенным суперским способом, то и выгрыша никакого я пока не вижу...
 Мне как-то попадалась UDF, которая со сносной скоростью разбирала XML-ы, которые в блобах лежали. Можно поискать ее реализацию и сварганить что-то подобное для чтения. А заливать чистые блобы...


jack128   (2004-08-21 17:24:00) [2]

не то ты делаешь.. Я думаю в направлении external tables думать надо. Хотя конечно это зависит от того что у тя за данные.


Desdechado   (2004-08-21 17:14:00) [3]

Даже если клиент и сервер на одной машине, то все равно - у них РАЗНЫЕ адресные пространства. DLL работает в адресном пространстве сервера, а клиент - сам по себе.


-SeM-   (2004-08-21 17:09:00) [4]

Еще раз [14]
"UDF это декларированная функция" сервера, но не клиента!


matt   (2004-08-21 17:00:00) [5]

я наверно все таки что то не понимаю - UDF это декларированная функция dll, разве я не могу передать в эту функцию указатель на переменную клиента?
а машина как я уже говорил выше - одна


Desdechado   (2004-08-21 16:42:00) [6]

В win32 каждая программа (а тем более каждая машина :) работает в своем адресном пространстве. Поэтому адрес AD00F576, указывающий на блок памяти с данными на клиенте в твоей программе, будет в другой программе на этом же клиенте указывать, например, на код какой-нибудь функции, причем в середине. А уж на сервере (машине и процессе) вообще неизвестно что это будет.


matt   (2004-08-21 16:32:00) [7]

я прошу прощения, вы не могли бы разьяснить?


Desdechado   (2004-08-21 16:29:00) [8]

вникни в [10], особенно последнюю строку


matt   (2004-08-21 16:22:00) [9]

хм.. а если udf просто по указателю будет возвращать значения, а Хранимая процедура уже будет заносить?


Desdechado   (2004-08-21 16:11:00) [10]

точно бред
неужели ты думаешь, что передача с клиента на сервер идет медленнее по тому же протоколу, чем по предлагаемому тобой способу?
да и указатель на память в клиенте НЕ ВАЛИДЕН для сервера...


Sergey_Masloff   (2004-08-21 16:06:00) [11]

Извини но это бред. Как UDF занесет их в другие таблицы? Открыв отдельный коннект к базе?  Это будет ДИКО медленно и ОЧЕНЬ глючно (если вообще всю эту мясорубку удастся раскрутить).


matt   (2004-08-21 16:00:00) [12]

есть большая структура данных, скорость занесения этих данных в базу крайне критична. Одно из предложений как ускорить занесения -
не передавать их непосредственно из клиента в базу, а передать лишь
указатель на эту структуру, а после чего UDF самостоятельно занесет их в нужные таблицы.


Sergey_Masloff   (2004-08-21 15:48:00) [13]

matt ©   (21.08.04 15:43) [6]
>нет, сервер должен получить доступ к адресному пространству >клиента
Не можешь хотя бы вкратце описать как ты себе это представляешь? Типа ReadProcessMemory()?


matt   (2004-08-21 15:43:00) [14]

нет, сервер должен получить доступ к адресному пространству клиента


Sergey_Masloff   (2004-08-21 15:42:00) [15]

matt ©   (21.08.04 15:39) [4]
Да при чем тут локальный - не локальный. Ты клиентский указатель хочешь передать чтобы использовать его в адресном пространстве сервера? Я правильно понял?


matt   (2004-08-21 15:39:00) [16]

база на локальном хосте, из клиента в базу должен передастся указатель на некую переменную, хранимая процедура передает в UFD которая получив указатель использует по своему усмортрению


Desdechado   (2004-08-21 15:36:00) [17]

в памяти чего? сервера? а как ты этот указатель получил?


matt   (2004-08-21 15:30:00) [18]

на область данных в памяти (pointer)


Desdechado   (2004-08-21 15:28:00) [19]

указатель на что?


Наверх

Титульная страница Поиск, карта сайта Написать письмо