|
SSRS + Oracle + UDT
|
|||
---|---|---|---|
#18+
Всем привет. Друзья, ситуация очень напоминает цитату с баша: писал серверную часть на Oracle, думая "если что-то не так, то это будут проблемы того, кто будет лепить интерфейс", а потом вышло так что и клиентскую часть леплю я :) Да еще и на SSRS, о существовании которого я узнал неделю назад. Короче, основная мета-задача: запросить у пользователя параметры расчета, передать их функции Oracle, от нее получить код возврата и выходные параметры, которые можно использовать в отчете. Есть две основные проблемы: 1) Как вернуть выходные параметры процедуры/функции в SSRS? Судя по тому, что я нагуглил, по человечески никак. Нашел костыль: возвращаю sys_refcrusor типа "select p_out1, p_out2 , ... from dual;", скрипя сердцем - пойдет. 2) Как передать входные параметры, если они из себя представляют User-defined types? Т.е. мне нужно взять, к примеру, несколько параметров отчета, и обернуть их в конструктор моего типа Oracle: param(:p_param1), param(:p_param2), а потом эти параметры объединить в коллекцию: param_list(param(:p_param1),param(:p_param2)). В целом для Oralce вызов выглядит примерно так: Код: plsql 1. 2. 3.
где param() - конструктор класса, param_list () - конструктор коллекции, :in1,:in2 - входные параметры отчета, :out - sys_refcursor А теперь, дуалистическая проблема: Запрос в DataSet можно настроить как Text, либо как Stored Procedure, при этом, в первом случае нет проблем с вызовом конструкторов классов и коллекций (что хочу то и пишу), но возникает проблема с обработкой выходного sys_refcursor. Во втором случае наоборот: SSRS понимает sys_refcursor, но не дает возможность подать правильные входные параметры. Как-то так. Кто чем может помочь? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2014, 18:08 |
|
SSRS + Oracle + UDT
|
|||
---|---|---|---|
#18+
moishamiem, Зачем вам вообще функция? Сделайте процедуру. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2014, 19:30 |
|
SSRS + Oracle + UDT
|
|||
---|---|---|---|
#18+
tarrusmoishamiem, Зачем вам вообще функция? Сделайте процедуру. Ну или вызовите её в запросе. К сожалению, очень слабо ориентируюсь в Оракле, надеюсь там принцип такой же как в MSSQL. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2014, 19:31 |
|
SSRS + Oracle + UDT
|
|||
---|---|---|---|
#18+
tarrusЗачем вам вообще функция? Сделайте процедуру. С процедурой остаются такие же проблемы с передачей/возвратом параметров. tarrusНу или вызовите её в запросе. К сожалению, очень слабо ориентируюсь в Оракле, надеюсь там принцип такой же как в MSSQL. Да, такой вариант рассматривался, но, к сожалению, в виду определенных ограничений Oracle, вызывать такую функцию в запросе по-простому нельзя (внутри функции много рекурсивного DML). ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2014, 09:10 |
|
SSRS + Oracle + UDT
|
|||
---|---|---|---|
#18+
moishamiemtarrusЗачем вам вообще функция? Сделайте процедуру. С процедурой остаются такие же проблемы с передачей/возвратом параметров. Как такое может быть? Вот у товарища все работает. Returning Oracle Stored Procedure Resultset in SSRS ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2014, 10:53 |
|
SSRS + Oracle + UDT
|
|||
---|---|---|---|
#18+
tarrus, Да, читал, сделал так же ВЫХОДНЫЕ параметры через out sys_refcrusor, что и отобразил в первом сообщении темы. Проблема теперь передать ВХОДНЫЕ параметры, обернутые в конструкторы коллекций/объектов. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2014, 11:06 |
|
SSRS + Oracle + UDT
|
|||
---|---|---|---|
#18+
moishamiemtarrus, Да, читал, сделал так же ВЫХОДНЫЕ параметры через out sys_refcrusor, что и отобразил в первом сообщении темы. Проблема теперь передать ВХОДНЫЕ параметры, обернутые в конструкторы коллекций/объектов. Что-то вы не для того решили SSRS использовать. Передавайте нормальные типы данных и принимайте датасет. Какие коллекции, какие конструкторы? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2014, 11:09 |
|
|
start [/forum/topic.php?fid=31&fpage=20&tid=1533518]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
57ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
75ms |
get tp. blocked users: |
2ms |
others: | 11ms |
total: | 192ms |
0 / 0 |