|
|
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
Добрый день! Я новичек и в том и другом. Прочитал, что DW можно создавать на базе хранимых процедур. Вопрос: как должна выглядеть процедура для DW? Например, есть таблица AAA с полем BBB. И надо прочитать все строки в DW. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2006, 11:26 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
Учтите, что из Oracle процедура не возвращает select!!! Может проще в PB datastore сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2006, 11:31 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
Прошу прощения, может быть я неточно выразился. Имелось в виду DW - object, а не control. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2006, 11:34 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
это типа так создаётся динамически datastore с oracle lds_rfc=Create datastore new_sql = "select id, bil_kl, dat_begin, dat_end, bi_bank from " & +"con.zap_w where status='n'" new_syntax = SQLCA.SyntaxFromSQL(new_sql, & 'Style(Type=Form)', error_syntaxfromSQL) if Len(error_syntaxfromSQL) > 0 THEN f_insert_in_log(error_syntaxfromSQL) return(0) end if lds_rfc.Create(new_syntax, error_create) if Len(error_create) > 0 THEN f_insert_in_log(error_create) return(0) end if lds_rfc.SetTransObject(SQLCA) ll_rows_rfc=lds_rfc.Retrieve() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2006, 11:47 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
Как написать процедуру на PLSQL, чтобы она позволила создать DW - object ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2006, 11:52 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
А стоит оно того извращаться? Oracle процедура хорошо фетчит параметры и массив, а вот селект это оччень геморойно (для datawindow нужен селект ). Чем вам мой пример не нравится? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2006, 12:10 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
Пример понятен и хорош, но мне хочется разобраться с DW на основе хранимых процедур ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2006, 12:13 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
boogimanэто типа так создаётся динамически datastore с oracle Хочу предупредить, что такой способ создания DataStore ведет к двухкратному исполнению sql запроса, что может быть крайне нежелательно в случае большого времени исполнения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2006, 12:37 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
Процедура должна быть следующего ввида: Код: plaintext 1. 2. 3. 4. 5. Короче, смысл в том, что оракловая процедура должна возвращать REF CURSOR. Дерзайте. Задавайте вопросы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2006, 12:40 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
Ну а так к примеру вызвать процедуру из PB (9) transaction orac orac = create transaction orac.DBMS = "O84 Oracle8/8i (8.x.4+)" orac.LogPass = 'slava' orac.ServerName = "OW" orac.LogId = "ggg" orac.AutoCommit = True orac.DBParm = "PBCatalogOwner='go'" CONNECT USING oracul; IF oracul.SQLCode <> 0 THEN return END IF int nom1 =0 int nom2 =0 int nom3 =0 int nom4 =0 DECLARE proc_253 PROCEDURE FOR F_253_start (fil => :fil,dat => :dat) USING orac; EXECUTE proc_253; if oracul.SqlCode <> 0 then RETURN end if FETCH proc_253 INTO :nom1, :nom2,:nom3,:nom4; if oracul.SqlCode <> 0 then orac.SQLErrText) CLOSE proc_253; RETURN end if DISCONNECT USING oracul; destroy orac ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2006, 12:52 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
boogimanНу а так к примеру вызвать процедуру из PB (9) transaction orac orac = create transaction orac.DBMS = "O84 Oracle8/8i (8.x.4+)" orac.LogPass = 'slava' orac.ServerName = "OW" orac.LogId = "ggg" orac.AutoCommit = True orac.DBParm = "PBCatalogOwner='go'" ............. DISCONNECT USING oracul; destroy orac ИМХО не о том и не про то. Не в кассу по-моему. :) ЗЫ: Дай чтоль кусочек tnsnames.ora файла своего сервера для полного набора. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2006, 13:10 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
to AndrewN Вот я и не знаю, как это написать. А спросить не у кого. Подскажите пожалуйста на примере таблицы AAA с полем BBB Varchar2(10) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2006, 13:40 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2006, 15:29 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
Спасибо огромное! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2006, 09:03 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
Вот только еще вопрос. А каким образом курсор закроется после того как DW или DS будет использовано? Нужны ли какие-либо дополнительные действия? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2006, 09:48 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
ИМХО, ПБ должен сам закрыть курсор. А закрыть его какими либо другими средствами не получится из ПБ. По крайней мере я не знаю способов. Это работало. Более того, это описано в каких-то White-papers по ПБ. Более точно не могу сказать, не помню уже. Поищите на www.sybase.com :) Ну и конечно есть ещё один способ. Сайбейз как-то сделал оракловый пакет-враппер. Это крыжик в драйвере "PBDBMS". Я им никогда не пользовался и думаю мало кто пользовался вообще, по причине слабодокументированности и т.п. Итог: Использовать ref cursor, а всё остальное оставить на откуп ПБ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2006, 11:55 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
Спасибо большое. Я и сам думал, что PB должен сам, но были сомнения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2006, 12:00 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
AndrewNНу и конечно есть ещё один способ. Сайбейз как-то сделал оракловый пакет-враппер. Это крыжик в драйвере "PBDBMS". Я им никогда не пользовался и думаю мало кто пользовался вообще, по причине слабодокументированности и т.п. А там и документировать нечего. Мы пользовались этим пакетом. Нормально все работает. Но по большому счету, при работе с Ораклом ни такие извращения, ни возврат курсора не нужны. Это все от MSSQL идет, IMHO. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2006, 16:08 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
Oleg1Но по большому счету, при работе с Ораклом ни такие извращения, ни возврат курсора не нужны. Это все от MSSQL идет, IMHO.Да нет, не все так линейно. Например, отчеты на процедурах гораздо удобнее в сопровождении. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2006, 19:39 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
PL99 Oleg1Но по большому счету, при работе с Ораклом ни такие извращения, ни возврат курсора не нужны. Это все от MSSQL идет, IMHO.Да нет, не все так линейно. Например, отчеты на процедурах гораздо удобнее в сопровождении. У меня есть сомнения в упомянутом удобстве сопровождения. В чем разница между DW с процедурой с курсором и просто с запросом? И там и там надо написать запрос, только в первом случае запрос формируется на серверной стороне, а во втором на клиентской. Причем ничто не мешает и во втором случае хранить запрос в БД. Различия в следующем: DW на ХП - безопасность, выполняется только то, что разрешено сервером. DW на SELECT - гибкость, возможность динамически сформировать запрос на клиенте. Лично мне удобнее второе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2006, 11:35 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
Некоторые вещи либо нельзя сделать одним селектом либо делаются неэффективно. А в процедуре - ваяй что хочешь. В этом очень большое удобство. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2006, 12:21 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
Зато в процедурах можно использовать связываемые переменные, что влияет на производительность. Да и сам запрос можно выполнять динамически, т.е передавать его в параметрах вызова. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2006, 13:05 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
AndrewNНекоторые вещи либо нельзя сделать одним селектом либо делаются неэффективно. А в процедуре - ваяй что хочешь. В этом очень большое удобство. Все равно в конце процедуры будет SELECT. А подготовку можно и с клиента сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2006, 13:06 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyВ чем разница между DW с процедурой с курсором и просто с запросом? И там и там надо написать запрос, только в первом случае запрос формируется на серверной стороне, а во втором на клиентской. Причем ничто не мешает и во втором случае хранить запрос в БД.Формирование запроса на серверной стороне позволяет не тыкаться лишний раз клиентом, типа, оптимизируем траффик :-)) Anatoly MoskovskyРазличия в следующем: DW на ХП - безопасность, выполняется только то, что разрешено сервером. DW на SELECT - гибкость, возможность динамически сформировать запрос на клиенте.Безопасность независимо от того, как сформировано DW, определяется сервером, иначе это не безопасность, а так, только детей пугать :-) Anatoly MoskovskyЛично мне удобнее второе.На клиенте динамически формировать запрос ничуть не удобнее, чем на сервере, по мне так как раз наоборот, но тут,что называется, на вкус и цвет... :-) Кроме того, процедура позворяет написать статический код, который, хотя и выглядит ужасно, но зато обеспечивает требуемую производительность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2006, 19:49 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyВ чем разница между DW с процедурой с курсором и просто с запросом? И там и там надо написать запрос, только в первом случае запрос формируется на серверной стороне, а во втором на клиентской. Причем ничто не мешает и во втором случае хранить запрос в БД. Кстати, а план исподнения Вы тоже в БД собираетесь хранить в таком случает? Что толку то от текста. К тому же на некоторых серверах есть определенные аспекты удобные для реализации через SP, например raw level security... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2006, 11:42 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
PL99На клиенте динамически формировать запрос ничуть не удобнее, чем на сервере, по мне так как раз наоборот, но тут,что называется, на вкус и цвет... :-) Кроме того, процедура позворяет написать статический код, который, хотя и выглядит ужасно, но зато обеспечивает требуемую производительность. Я говорю об удобстве в ситуации когда опытный пользователь может сам писать произвольные запросы к базе либо непосредственно на SQL либо используя некий конструктор. У меня вообще есть сомнения, что это можно реализовать с помощью DW на SP. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2006, 15:51 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
Локшин Марк Anatoly MoskovskyВ чем разница между DW с процедурой с курсором и просто с запросом? И там и там надо написать запрос, только в первом случае запрос формируется на серверной стороне, а во втором на клиентской. Причем ничто не мешает и во втором случае хранить запрос в БД. Кстати, а план исподнения Вы тоже в БД собираетесь хранить в таком случает? Что толку то от текста. К тому же на некоторых серверах есть определенные аспекты удобные для реализации через SP, например raw level security... Какая разница где хранится план? При выполнении одинаковых запросов в ХП и с клиента у них планы будут одинаковыми. Насчет RLS - в Oracle еще с 8i есть поддержка этого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2006, 16:00 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyПри выполнении одинаковых запросов в ХП и с клиента у них планы будут одинаковыми. Не знаю как там в Oracle, а в MS SQL план исполнения хранимой процедуры строится при ее созданиии и хранится в базе, в отличие от запроса, который, в принципе, тоже может иметь сохраненный план исполнения в кэше, но в любом случае, не далее очередного restart'а сервера. Сдается мне, что и Oracle должет (может???) себя вести таким же образом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2006, 16:29 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
Локшин Марк Anatoly MoskovskyПри выполнении одинаковых запросов в ХП и с клиента у них планы будут одинаковыми. Не знаю как там в Oracle, а в MS SQL план исполнения хранимой процедуры строится при ее созданиии и хранится в базе, в отличие от запроса, который, в принципе, тоже может иметь сохраненный план исполнения в кэше, но в любом случае, не далее очередного restart'а сервера. Сдается мне, что и Oracle должет (может???) себя вести таким же образом. План в общем случае зависит от данных, поэтому хранить его не всегда полезно. В Oracle нужно явно указывать если требуется сохранить план запроса, и это не зависит от того в ХП выполняется запрос или где либо еще. И это забота DBA принимать такое решение хранить или нет. Вообще я говорил о том, что для операции RETRIEVE в DW использовать ХП в ORACLE (см. исходный вопрос и сабж) бессмысленно, поскольку все тоже самое можно проделать с клиента без более сложного кодирования и отладки серверной части. И даже более того - часть функциональности (полностью динамические запросы) вообще на ХП нельзя сделать. Еще раз напоминаю, что речь идеть только об ORACLE и только об операции RETRIEVE. Единственный аргумент для использования ХП в этой ситуации - это требования безопасности (например нужно запретить произвольные запросы к базе) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2006, 11:01 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyВообще я говорил о том, что для операции RETRIEVE в DW использовать ХП в ORACLE (см. исходный вопрос и сабж) бессмысленно, поскольку все тоже самое можно проделать с клиента без более сложного кодирования и отладки серверной части. И даже более того - часть функциональности (полностью динамические запросы) вообще на ХП нельзя сделать. Еще раз напоминаю, что речь идеть только об ORACLE и только об операции RETRIEVE. Абсолютно, категорически, на 100 % НЕ согласен . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2006, 15:52 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
Филипп Anatoly MoskovskyВообще я говорил о том, что для операции RETRIEVE в DW использовать ХП в ORACLE (см. исходный вопрос и сабж) бессмысленно, поскольку все тоже самое можно проделать с клиента без более сложного кодирования и отладки серверной части. И даже более того - часть функциональности (полностью динамические запросы) вообще на ХП нельзя сделать. Еще раз напоминаю, что речь идеть только об ORACLE и только об операции RETRIEVE. Абсолютно, категорически, на 100 % НЕ согласен . Было больно, но неубедительно :) Где аргументация? Опровергните эти утверждения из процитированного Вами (желательно примерами): 1) тоже самое можно проделать с клиента 2) часть функциональности (полностью динамические запросы) вообще на ХП нельзя сделать И заодно и это: 3) Использование ХП снижает переносимость серверной части между разными СУБД. Как следствие - удорожание такой миграции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2006, 16:13 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
2Anatoly Moskovsky : Я, думаю, что Вам это будет небезынтересно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2006, 06:30 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovsky Филипп Anatoly MoskovskyВообще я говорил о том, что для операции RETRIEVE в DW использовать ХП в ORACLE (см. исходный вопрос и сабж) бессмысленно, поскольку все тоже самое можно проделать с клиента без более сложного кодирования и отладки серверной части. И даже более того - часть функциональности (полностью динамические запросы) вообще на ХП нельзя сделать. Еще раз напоминаю, что речь идеть только об ORACLE и только об операции RETRIEVE. Абсолютно, категорически, на 100 % НЕ согласен . Было больно, но неубедительно :) Где аргументация? Опровергните эти утверждения из процитированного Вами (желательно примерами): 1) тоже самое можно проделать с клиента 2) часть функциональности (полностью динамические запросы) вообще на ХП нельзя сделать И заодно и это: 3) Использование ХП снижает переносимость серверной части между разными СУБД. Как следствие - удорожание такой миграции. Пункт 1 - Объектные типы Oracle. Вложенные таблицы и много другое. :) Пункт 2 - Раскрою вам большой секрет - динамический SQL есть и на серверной стороне. Пункт 3 - довольно сомнителен. Или вы всегда пишете запросы только с использованием ANSI SQL? НЕ ВЕРЮ! Ибо гораздо проще, приятней и понятней написать запрос на оракловом диалекте и работать такой запрос будет лучше, чем тоже самое изображать ANSI SQL-compilant. И даже это не гарантирует Вам одинакового поведения на разных СУБД. Так что ой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2006, 11:32 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
Геннадич2Anatoly Moskovsky : Я, думаю, что Вам это будет небезынтересно Прочитал. Не то. Там спор идет о том, где должна обрабатываться ВСЯ бизнес-логика, на сервере или на клиенте. Для меня же бизнес-логика делится на две части: 1) модификация данных 2) представление данных п.1 должен подчиняться единым для всех пользователей системы правилам, поэтому эта часть должна выполняться на сервере (БД, сервер приложений), чтобы обеспечить целостность данных. п.2 - это субъективное, здесь разработчик не может диктовать пользователю, в каких разрезах ему можно смотреть данные (вплоть до использования напрямую SQL). Поэтому п.2 должен выполняться на клиенте. Выше я говорил только про п.2, поскольку DW.RETRIEVE безусловно является частью процесса представления данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2006, 12:14 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovsky Еще раз напоминаю, что речь идеть только об ORACLE и только об операции RETRIEVE. AndrewNОпровергните эти утверждения из процитированного Вами (желательно примерами): 1) тоже самое можно проделать с клиента 2) часть функциональности (полностью динамические запросы) вообще на ХП нельзя сделать И заодно и это: 3) Использование ХП снижает переносимость серверной части между разными СУБД. Как следствие - удорожание такой миграции. Пункт 1 - Объектные типы Oracle. Вложенные таблицы и много другое. :) Пункт 2 - Раскрою вам большой секрет - динамический SQL есть и на серверной стороне. Пункт 3 - довольно сомнителен. Или вы всегда пишете запросы только с использованием ANSI SQL? НЕ ВЕРЮ! Ибо гораздо проще, приятней и понятней написать запрос на оракловом диалекте и работать такой запрос будет лучше, чем тоже самое изображать ANSI SQL-compilant. И даже это не гарантирует Вам одинакового поведения на разных СУБД. Так что ой. 1. Ну что же, приведите пример ХП пригодной для использования с DW и которую нельзя переписать на PB (только что-то компактное, чтоб сразу была видна суть, а то у меня есть чем заняться помимо этого форума :). Насчет объектов в таблицах. А их кто-то использует? 2. Вы не поверите, я знал и раньше. А теперь состыкуйте динамический SQL в ХП и Datawindow 3. У нас был проект написанный под Oracle. Когда потребовалось его мигрировать на PostgreSQL, то автоматический конвертор DW из Oracle SQL в PostgreSQL был написан за пару недель одним человеком. А вот пакеты так и не удалось автоматом конвертнуть. Так тот проект и дропнули, поскольку переписывать серверную часть было слишком дорого, дешевле клиентам на наши деньги Oracle покупать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2006, 12:40 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovsky 1. Ну что же, приведите пример ХП пригодной для использования с DW и которую нельзя переписать на PB (только что-то компактное, чтоб сразу была видна суть, а то у меня есть чем заняться помимо этого форума :). Ну, строго говоря, подобные ситуации все же возможны. :) Например, хранимая собирает нужные данные в промежуточной таблице. Это полезно, когда объем обрабатываемых данных велик, а результат мал. Или если надо сначала полазить в закрытых для общего доступа таблицах. ИМХО, массовое использование хранимых для select'а -- это фирменная фишка MSSQL. Мне иногда кажется, что он впринципе заточен восновном под такую работу. :) Anatoly Moskovsky2. Вы не поверите, я знал и раньше. А теперь состыкуйте динамический SQL в ХП и Datawindow Нет ничего не возможного. Просто "динамика" может быть разной: список колонок, условия запроса и т.п. Anatoly Moskovsky3. У нас был проект написанный под Oracle. Когда потребовалось его мигрировать на PostgreSQL, то автоматический конвертор DW из Oracle SQL в PostgreSQL был написан за пару недель одним человеком. А вот пакеты так и не удалось автоматом конвертнуть. Так тот проект и дропнули, поскольку переписывать серверную часть было слишком дорого, дешевле клиентам на наши деньги Oracle покупать. С переносимостью действительно не все так просто, т.к. языки хранимых почти у всех серверов только с виду походие, а реально ощутимо разные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2006, 13:47 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
Oleg1 Anatoly Moskovsky 1. Ну что же, приведите пример ХП пригодной для использования с DW и которую нельзя переписать на PB (только что-то компактное, чтоб сразу была видна суть, а то у меня есть чем заняться помимо этого форума :). Ну, строго говоря, подобные ситуации все же возможны. :) Например, хранимая собирает нужные данные в промежуточной таблице. Это полезно, когда объем обрабатываемых данных велик, а результат мал. Ничто не мешает выполнить запрос, заполняющий временную таблицу, из PB. Или если надо сначала полазить в закрытых для общего доступа таблицах.Для сокрытия данных в Oracle вполне достаточно view и RLS. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2006, 14:20 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
Ха-ха-ха. Мистер очень занят, чтоб немного подумать самостоятельно. Так пишите же как вам нравится! Btw в драйверах O84, O92 исправили ошибку с парсением SQL? Или все по-прежнему спотыкается на ровных местах?! ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2006, 15:39 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
AndrewNХа-ха-ха. Мистер очень занят, чтоб немного подумать самостоятельно. Так пишите же как вам нравится! Убедительно. Btw в драйверах O84, O92 исправили ошибку с парсением SQL? Или все по-прежнему спотыкается на ровных местах?! ) Не знаю. Я использую O73. Он работает со всеми ораклами. И в нем нет никаких проблем с SQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2006, 15:59 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
Надеюсь и ПБ у вас 5-ой версии. Good luck! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2006, 16:38 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
to AndrewN Каждый пишет как может, конкретный вариант решения зависит от постановки задачи Я использовал оба варианта (хотя, каюсь, к Pb ХП не привешивал), также разрабатывал и хранимые процедуры, так что аргументов в пользу какого-либо из вариантов знаю достаточно. Незачем оскорблять друг друга. У каждого свой подход к разработке, свои задачи - поэтому выбор есть у каждого (опять же СУБД у всех разная). Просто, выбор оптимального варианта - есть наша цель. Хотя, честно признаюсь, если есть DW, чаще всего, незачем использовать хранимые процедуры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2006, 18:13 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovsky Филипп Anatoly MoskovskyВообще я говорил о том, что для операции RETRIEVE в DW использовать ХП в ORACLE (см. исходный вопрос и сабж) бессмысленно, поскольку все тоже самое можно проделать с клиента без более сложного кодирования и отладки серверной части. И даже более того - часть функциональности (полностью динамические запросы) вообще на ХП нельзя сделать. Еще раз напоминаю, что речь идеть только об ORACLE и только об операции RETRIEVE. Абсолютно, категорически, на 100 % НЕ согласен . Было больно, но неубедительно :) Где аргументация? Опровергните эти утверждения из процитированного Вами (желательно примерами): 1) тоже самое можно проделать с клиента 2) часть функциональности (полностью динамические запросы) вообще на ХП нельзя сделать И заодно и это: 3) Использование ХП снижает переносимость серверной части между разными СУБД. Как следствие - удорожание такой миграции. 1) Нельзя. Вот живой пример. В нашем продукте, ориентированном на Medical Malpractice Insurance несколько модулей. 2 основных - Claims и Policy. Claims - 50%/50% с точки зрения функциональности между PB и PL/SQl (Oracle), Policy - 25%/75% с точки зрения функциональности между PB и PL/SQl. Claims включает в себя мини полиси. Клиент, когда создает Claims, может использовать покрытия застрахованного человека как из большой Полиси, так и из мини. Чтоб найти и показать покрытия (coverage), имеется такая процедура Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238. 239. 240. 241. 242. 243. 244. 245. 246. 247. 248. 249. 250. 251. 252. 253. 254. 255. 256. 257. 258. 259. 260. 261. 262. 263. 264. 265. 266. 267. 268. 269. 270. 271. 272. 273. 274. 275. 276. 277. 278. 279. 280. 281. 282. 283. 284. 285. 286. 287. 288. 289. 290. 291. 292. 293. 294. 295. 296. 297. 298. 299. 300. 301. 302. 303. 304. 305. 306. 307. 308. 309. 310. 311. 312. 313. 314. 315. 316. 317. 318. 319. 320. 321. 322. 323. 324. 325. 326. 327. 328. 329. 330. 331. 332. 333. 334. 335. 336. 337. 338. 339. 340. 341. 342. 343. 344. 345. 346. 347. 348. 349. 350. 351. 352. 353. 354. 355. 356. 357. 358. 359. 360. 361. 362. 363. 364. 365. 366. 367. 368. 369. 370. 371. 372. 373. 374. 375. 376. 377. 378. 379. 380. 381. 382. 383. 384. 385. 386. 387. 388. 389. 390. 391. 392. 393. 394. 395. 396. 397. 398. 399. 400. 401. 402. 403. 404. 405. 406. 407. 408. 409. 410. 411. 412. 413. 414. 415. 416. 417. 418. 419. 420. 421. 422. 423. 424. 425. 426. 427. 428. 429. 430. 431. 432. 433. 434. 435. 436. 437. 438. 439. 440. 441. 442. 443. 444. 445. 446. 447. 448. 449. 450. 451. 452. 453. 454. 455. 456. 457. 458. 459. 460. 461. 462. 463. 464. 465. 466. 467. 468. 469. 470. 471. 472. 473. 474. 475. 476. 477. 478. 479. 480. 481. 482. 483. 484. 485. 486. 487. 488. 489. 490. 491. 492. 493. 494. 495. 496. 497. 498. 499. 500. 501. 502. 503. 504. 505. 506. 507. 508. 509. 510. 511. 512. 513. 514. 515. 516. 517. 518. 519. 520. 521. 522. 523. 524. 525. 526. 527. 528. 529. 530. 531. 532. 533. 534. 535. 536. 537. 538. 539. 540. 541. 542. 543. 544. 545. 546. 2 - динамический SQL есть и на серверной стороне, а за использование его в РВ я подчинённых увольняю :-) 3. По сути дела существует только 3 метода переносимости приложений написанных на РВ между разными СУБД: а) Все DW нарисованы в графическом режиме. Я в этот метод не верю, поскольку он приводит к наименьшему знаменателю с точкм зрения использования возможностей СУБД в DW б) Иметь параллельные наборы DW для каждой СУБД в) Весь CRUD, включая DW делать через хранимые процедуры и портать только хранимые процедуры. Я работал на продукте (успешно применяющемся в очень многих университетах США), который использует именно такой подход. На мой взгляд вариант в более поддерживаем, чем вариант б ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2006, 22:02 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
2 Anatoly Moskovsky: Очень часто бывает, что аргументы для запроса, включая их количество, не меняются, а вот технология вычисления данных меняется. И что же получается в вашем случае: для изменения одной формы отчёта надо перекомпиливать все отчёты, которые входят в pbd, после этого не будет лишним протестировать их все. Но если данные вычисляются на сервере, то для изменения отчёта совсем не надо трогать ни exe ни pbd, - только процедуру на сервере. А по поводу универсального софта для любых баз - это В САД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2006, 06:31 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
2 Anatoly Moskovsky: И еще, тут помнится обсуждалась тема про автоматическую параметризацию запросов. Так вот, использование stored procedures не требует наличия такого механизма в СУБД, в отличие от тех запросов, которые формируются в DataWindow, для повторного использования плана исполнения запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2006, 10:29 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
spas2001to AndrewN .... Незачем оскорблять друг друга. ... Что-то было немного эмоционально. Но я не вижу чтобы кто-то кого-то оскорблял. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2006, 11:15 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
to Филипп: 1. Не увидел ничего такого что нельзя сделать на клиенте. Фильтр запроса там формируется в зависимости от некоторых параметров (скорее всего это права доступа и прикладные параметры) Для переноса на клиентскую часть с сохранением системы прав можно применить метки данных (которые так или иначе можно было реализовать в любой версии Оракла) Анализ остальных параметров, не относящихся к правам, просто один к одному переносится на клиент. 2. Ну хоть как-то обоснуйте. Я вижу только то что планы динамических запросов могут быть просто ужасными. Но на то есть DBA с ограничениями ресурсов выделяемых на запросы. 3. Я уже приводил пример приложения в котором DW (не в графике) автоматом переводились из Oracle в Postgres. Так что есть и другие способы мигрировать. А вот портирование ХП в другую СУБД оказалось намного сложнее (причем как руками так и автоматом) чем портирование SQL запросов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2006, 12:09 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
ГеннадичОчень часто бывает, что аргументы для запроса, включая их количество, не меняются, а вот технология вычисления данных меняется. И что же получается в вашем случае: для изменения одной формы отчёта надо перекомпиливать все отчёты, которые входят в pbd, после этого не будет лишним протестировать их все. Но если данные вычисляются на сервере, то для изменения отчёта совсем не надо трогать ни exe ни pbd, - только процедуру на сервере. А по поводу универсального софта для любых баз - это В САД. У нас все статические отчеты хранятся в таблице на сервере (грубо говоря в виде синтаксиса DW) и распространяются в таких же патчах что и структура БД, отдельно от EXE. ХП в них используются только там где нужно для оптимизации, а не как обязательное условие. Про универсальный софт я вообще не говорил - откуда это? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2006, 12:20 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
Локшин Марк2 Anatoly Moskovsky: И еще, тут помнится обсуждалась тема про автоматическую параметризацию запросов. Так вот, использование stored procedures не требует наличия такого механизма в СУБД, в отличие от тех запросов, которые формируются в DataWindow, для повторного использования плана исполнения запроса. Ну нашли же вроде решение. Тем более что для последних Ораклов это уже неактуально :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2006, 12:25 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
Я хочу скорректировать свою позицию в результате обсуждения. Раньше я говорил, что использовать ХП в DW для выборки бессмысленно. Теперь я считаю, что DW на ХП имеют такое же право на существование как и DW на SELECT, кроме полностью динамических запросов - их по-прежнему не имеет смысл выполнять через ХП. Но указанные мной недостатки сохраняются: - ХП сложнее отлаживать - SQL намного проще портировать чем ХП ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2006, 12:47 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyНо указанные мной недостатки сохраняются: - ХП сложнее отлаживать - SQL намного проще портировать чем ХП1. Опять-таки, на вкус и цвет... Мне кажется, что отлаживать ХП ничуть не сложнее :-) 2. В свое время пробовал портировать серверный код из ASA в MSSQL. Ручками. Серьезных проблем не наблюдалось. Вообще, честно говоря, многоплатформенные решения последние годы меня, скажем так, настораживают. Но, если уж приходится, то лучше эту работу не перекладывать на тупую машину, а то вылезут глюки на продакшен, а виноват будет разработчик :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2006, 12:57 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
PL99 Anatoly MoskovskyНо указанные мной недостатки сохраняются: - ХП сложнее отлаживать - SQL намного проще портировать чем ХП1. Опять-таки, на вкус и цвет... Мне кажется, что отлаживать ХП ничуть не сложнее :-) 2. В свое время пробовал портировать серверный код из ASA в MSSQL. Ручками. Серьезных проблем не наблюдалось. 1. Из отладчика PB нельзя зайти в ХП. 2. Ну так языки вроде схожие. Вообще, честно говоря, многоплатформенные решения последние годы меня, скажем так, настораживают. Но, если уж приходится, то лучше эту работу не перекладывать на тупую машину, а то вылезут глюки на продакшен, а виноват будет разработчик :-) Портирование необязательно имеет целью многоплатформенность. Может просто разработчики решили сменить платформу. Да. Согласен. Руками надежнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2006, 13:58 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyИз отладчика PB нельзя зайти в ХП. Зато отладчик ХП работает на порядок, нет на два порядка стабильнее чем ЭТО... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2006, 14:12 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
Локшин Марк Anatoly MoskovskyИз отладчика PB нельзя зайти в ХП. Зато отладчик ХП работает на порядок, нет на два порядка стабильнее чем ЭТО... Да. Но часто отладка нужна как раз для обнаружения проблем при взаимодействии различных частей программы. В случае, например, если ошибка зависит от предыдущих вызовов ХП, то просто вызова ХП из внешнего отладчика может быть недостаточно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2006, 14:27 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskySQL намного проще портировать чем ХП А это что за извините лепет :-))? ХП - это SQL А насчёт Anatoly MoskovskyНе увидел ничего такого что нельзя сделать на клиенте. Фильтр запроса там формируется в зависимости от некоторых параметров (скорее всего это права доступа и прикладные параметры) Для переноса на клиентскую часть с сохранением системы прав можно применить метки данных (которые так или иначе можно было реализовать в любой версии Оракла) Анализ остальных параметров, не относящихся к правам, просто один к одному переносится на клиент. Вообще смешно. Сделать это на клиенте и поддерживать было бы раз в 10 сложнее... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2006, 15:58 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
Филипп Anatoly MoskovskySQL намного проще портировать чем ХП А это что за извините лепет :-))? ХП - это SQL Да ладно придираться к словам. Всем и так понятно что в данном контексте SQL значило SQL SELECT. А насчёт Anatoly MoskovskyНе увидел ничего такого что нельзя сделать на клиенте. Фильтр запроса там формируется в зависимости от некоторых параметров (скорее всего это права доступа и прикладные параметры) Для переноса на клиентскую часть с сохранением системы прав можно применить метки данных (которые так или иначе можно было реализовать в любой версии Оракла) Анализ остальных параметров, не относящихся к правам, просто один к одному переносится на клиент. Вообще смешно. Сделать это на клиенте и поддерживать было бы раз в 10 сложнее... А это уже субъективное насчет сложности. Учитывая что Вы всегда делаете на ХП, нет ничего удивительного, что перенос функциональности на клиент вызывает сложности. Главное что Вы признали что на клиенте это можно сделать :) А уж сложно или нет зависит от того как все спроектировать. Если изначально проектировалось что все будет на серверной стороне, то перенести на клиент в том же виде естественно не получится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2006, 17:02 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyГлавное что Вы признали что на клиенте это можно сделать :) Единственное что я могу признать - это что на клиенте это запрещается делать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2006, 19:38 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
Филипп Anatoly MoskovskyГлавное что Вы признали что на клиенте это можно сделать :) Единственное что я могу признать - это что на клиенте это запрещается делать... Не вижу смысла продолжать религиозный спор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2006, 20:31 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovsky Филипп Anatoly MoskovskyГлавное что Вы признали что на клиенте это можно сделать :) Единственное что я могу признать - это что на клиенте это запрещается делать... Не вижу смысла продолжать религиозный спор. Какой тут релиогиозный спор ? Логика на клиенте это вопреки здравому смыслу :). Разве что в качестве студенческого проекта ? В свое время отаказался от SELECT-ов на стороне клиента и ни разу не пожалел об этом. Жалею, что еще не все "подчистил" в клиенте - вот от этого проблемы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2006, 22:46 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
alex108Какой тут релиогиозный спор ? Религиозный по своей неаргументированности и непринятию альтернативных точек зрения. Логика на клиенте это вопреки здравому смыслу :). Здравый смысл подсказывал в древности, что Солнце вращается вокруг Земли или что Земля плоская. В свое время отаказался от SELECT-ов на стороне клиента и ни разу не пожалел об этом. Жалею, что еще не все "подчистил" в клиенте - вот от этого проблемы.В свое время принял ислам, с тех пор не жалею. Жаль только что еще не всех неверных подчистил. Понятна аналогия? Я допускаю, что я не прав. Но я никогда никому не верил на слово и не собираюсь. И если кто-то говорит "запрещено", то это надо обосновывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2006, 11:06 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
Выскажу свои две копейки (не вступая в религиозные споры :) ) Несколько лет назад работал на PB7. Понадобилось соорудить некий запрос с 5 (если не ошибаюсь) уровнями вложенности. Дык PB невразумительно ругался и отказывался его кушать. Убирал один уровень - все работало. Естественно, что исходный запрос предварительно был отлажен в SQL*Plus. Пример привести, к сожалению не могу, ввиду прошествия времени. Похожая вещь встречалась, например, в Forms 6 (родном продукте Oracle), когда клиентский SQL отставал от серверного и не "кушал" аналитические функции. Это я к тому, что реализация клиента может не поддерживать новые фичи сервера и тогда ЕДИНСТВЕННОЙ возможностью остается реализация с пом. хранимой процедуры / функции ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2006, 11:16 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
Эх, чёрт меня дернул спросить... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2006, 11:33 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
tru55Несколько лет назад работал на PB7. Понадобилось соорудить некий запрос с 5 (если не ошибаюсь) уровнями вложенности. Дык PB невразумительно ругался и отказывался его кушать. Убирал один уровень - все работало. Естественно, что исходный запрос предварительно был отлажен в SQL*Plus. Пример привести, к сожалению не могу, ввиду прошествия времени. Похожая вещь встречалась, например, в Forms 6 (родном продукте Oracle), когда клиентский SQL отставал от серверного и не "кушал" аналитические функции. Это я к тому, что реализация клиента может не поддерживать новые фичи сервера и тогда ЕДИНСТВЕННОЙ возможностью остается реализация с пом. хранимой процедуры / функцииНедостатки конкретных средств разработки не могут являться основанием для отказа от технологии в целом. А насчет "отказывался его кушать" так это и по сей день есть в PB и не только на сложных запросах но и на примитивных :) совсем новичекЭх, чёрт меня дернул спросить... Слово не воробей :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2006, 12:04 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
2 Филипп Ну насчет запрещается - работает принцЫп "Я начальник - ты дурак" Я тут пытаюсь доказать, что использование динамического SQL в SP это удобно и правильно, а мне отвечают примерно то же что ты своим подчиненным СУБД Oracle - почему же и не воспользоваться очевидными преимуществами Так-то вот бывает в жизни ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2006, 12:14 |
|
||
|
DW и процедура Oracle
|
|||
|---|---|---|---|
|
#18+
spas20012 Филипп Ну насчет запрещается - работает принцЫп "Я начальник - ты дурак" Насчёт запрещается там вообще-то улыбка была. А запрещаю я (причём утрированно - то бишь борюсь пока камня на камне не останется) не динамический SQL как таковой, а ЛЮБОЙ embedded SQL, мы здесь это уже много обсуждали... Или dataobject, или RPC Func на transaction object, с другими вариантами борюсь до последней капли крови :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2006, 19:17 |
|
||
|
|

start [/forum/topic.php?all=1&fid=15&tid=1337524]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
137ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
76ms |
get tp. blocked users: |
1ms |
| others: | 244ms |
| total: | 499ms |

| 0 / 0 |
