Stimulsoft Reports AND Oracle

Обсуждение Stimulsoft Ultimate
neodroid
Сообщения: 4
Зарегистрирован: 25 мар 2011, 03:50
Откуда: KZ

Stimulsoft Reports AND Oracle

Сообщение neodroid »

Сразу хочу перейти к постановке задачи.
Имеется крупная организация, которая на данный момент использует Crystal Reports и Business Objects для системы отчетности.
В связи с рядом объективный и субъективных причин, возникла необходимость перехода с CR на одну из альтернативных систем отчетности.
На данный момент рассматривается кандидатура Stimulsoft Reports, поэтому хотелось бы задать несколько вопросов, которые касаются в первую очередь продукта Designer
1) Существуют ли коннекторы к БД Oracle через Oracle Client?
2) Есть ли возможность выгрузки отчетов из хранимых процедур PL\SQL?
3) Возможно ли составление отчетов с входящими параметрами?
Aleksey
Сообщения: 2761
Зарегистрирован: 22 апр 2010, 06:57

Stimulsoft Reports AND Oracle

Сообщение Aleksey »

Здравствуйте,
neodroid писал(а):1) Существуют ли коннекторы к БД Oracle через Oracle Client?
Вы можете использовать как ODBC, OleDb адаптеры, так и Oracle адаптеры, которые доступны для скачивания на нашем сайте в разделе downloads.
Вы можете их протестировать.
neodroid писал(а):2) Есть ли возможность выгрузки отчетов из хранимых процедур PL\SQL?
Пожалуйста, уточните вашу задачу.
Если вы подразумеваете получение данных с помощью хранимых процедур, то - да, это возможно.
neodroid писал(а):3) Возможно ли составление отчетов с входящими параметрами?
Пожалуйста, уточните вашу задачу. Для каких целей будут использоваться эти параметры.

Спасибо.
neodroid
Сообщения: 4
Зарегистрирован: 25 мар 2011, 03:50
Откуда: KZ

Stimulsoft Reports AND Oracle

Сообщение neodroid »

Aleksey писал(а): Пожалуйста, уточните вашу задачу.
Если вы подразумеваете получение данных с помощью хранимых процедур, то - да, это возможно.
Имеется хранимая процедура, у которой один из OUT-параметров - REF CURSOR.
При разработке отчета в CR, определение OUT-параметра происходит автоматически и данные для отчета берутся из него.
Собственно большинство наших отчетов построены именно таким образом. :shame:
Aleksey
Сообщения: 2761
Зарегистрирован: 22 апр 2010, 06:57

Stimulsoft Reports AND Oracle

Сообщение Aleksey »

Здравствуйте,

На данный момент, данные типа REF CURSOR не поддерживаются в нашем продукте.
Но если вы можете предоставить подробное описание как они работают в ADO.NET и в Oracle, мы готовы реализовать данный тип данных.

Спасибо.
neodroid
Сообщения: 4
Зарегистрирован: 25 мар 2011, 03:50
Откуда: KZ

Stimulsoft Reports AND Oracle

Сообщение neodroid »

Здравствуйте!
Дела обстоят следующим образом:
1) SQL запрос для того, что бы получить список хранимых процедур

Код: Выделить всё

SELECT 
    UO.OBJECT_NAME  --имя процедуры
            FROM USER_OBJECTS uo 
            WHERE UO.OBJECT_TYPE = 'PROCEDURE'
2) Получение параметров хранимой процедуры

Код: Выделить всё

SELECT 
  uo.argument_name , --Имя параметра
  uo.data_type,  -- Тип параметра
  uo.IN_OUT  -- IN/OUT  исходящий или входящий
  
  FROM ALL_ARGUMENTS uo
  WHERE OBJECT_NAME = '%OBJECT_NAME%'   -- Где %OBJECT_NAME% - имя процедуры
                         AND OWNER = '%USER_NAME%' -- Где %USER_NAME% - имя владельца
                        ORDER BY UO.SEQUENCE -- ну и в необходимом порядке
3) Вызов хранимой процедуры с входящими и исходящими параметрами

Код: Выделить всё

//Подключаем Оракл-клиент
using System.Data.OracleClient;

//Создаем Оракл-соединение
public OracleConnection myConnection = new OracleConnection("Data Source=TNS_NAME_HERE;Persist Security Info=True;User ID=USER_NAME;Password=******;Unicode=True;"); //строка соединения

        public DataTable getAnyData(int numberParam)
        {
            OracleCommand command = new OracleCommand("USER_NAME.getAnyData", myConnection); //имя хранимой процедуры
            command.CommandType = CommandType.StoredProcedure;
            OracleParameter oraNumberParam = new OracleParameter("inNumberParam", OracleType.Number);
            oraNumberParam.Value =  numberParam
            command.Parameters.Add(oraNumberParam); //добавляем первый параметр

            OracleParameter oraResult = new OracleParameter("outCursorParam", OracleType.Cursor);
            oraResult.Direction = ParameterDirection.Output; // напоминаем, что это у нас исходящий параметр
            command.Parameters.Add(oraResult);

            OracleDataReader dr = null;
            DataTable dt = new DataTable();
            try
            {
                myConnection.Open(); //поехали
                dr = command.ExecuteReader(CommandBehavior.CloseConnection); //получаем DataReader
                dt.Load(dr); //выгружаем в удобный для нас DataTable (выбор вкуса)
                myConnection.Close(); //Закрываем соединение
            }
            catch
            {
                return null; //Если возникли проблемы
            }

            return dt;


        }

Вот как-то так :blush:



Aleksey
Сообщения: 2761
Зарегистрирован: 22 апр 2010, 06:57

Stimulsoft Reports AND Oracle

Сообщение Aleksey »

Здравствуйте,

Спасибо за предоставленную информацию.
Добавим поддержку данного типа после релиза.

Спасибо.
Aleksey
Сообщения: 2761
Зарегистрирован: 22 апр 2010, 06:57

Stimulsoft Reports AND Oracle

Сообщение Aleksey »

Здравствуйте,

Работа с процедурами в нашем продукте поддерживается. Некорректно работают процедуры с типом возвращаемых данных REF CURSOR.
Не могли бы вы привести пример такой процедуры в Oracle.

Спасибо.
neodroid
Сообщения: 4
Зарегистрирован: 25 мар 2011, 03:50
Откуда: KZ

Stimulsoft Reports AND Oracle

Сообщение neodroid »

Здравствуйте!
Вышла ли новая версия с поддержкой получения данных из Оракового курсора?
Aleksey
Сообщения: 2761
Зарегистрирован: 22 апр 2010, 06:57

Stimulsoft Reports AND Oracle

Сообщение Aleksey »

Здравствуйте,

К сожалению, но пока что данный тип не поддерживается.
Постараемся заняться данным вопросом в ближайшее время.

Спасибо.
Aleksey
Сообщения: 2761
Зарегистрирован: 22 апр 2010, 06:57

Stimulsoft Reports AND Oracle

Сообщение Aleksey »

Здравствуйте,

Добавили поддержку типа RefCursor для процедур.
Решение будет доступно в предрелизном билде на этой неделе. Так же необходимо будет скачать обновленный Oracle.ODP дата адаптер с нашего сайта.

Сообщите, если возникнут какие-либо вопросы.
Спасибо.
Ответить