|
|
|
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 |
|
||
|
|

start [/forum/topic.php?fid=15&msg=34096803&tid=1337524]: |
0ms |
get settings: |
10ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
74ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
78ms |
get tp. blocked users: |
1ms |
| others: | 247ms |
| total: | 446ms |

| 0 / 0 |
