Модераторы: diadiavova
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с БД через Cocoon ESQL, вызов процедуры с вход и выход параметр 
V
    Опции темы
AlienRise
  Дата 30.10.2009, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 1.2.2008

Репутация: нет
Всего: нет



Здравствуйте, уже 2 день бьюсь над проблемой
поиск по гуглу не дал внятных ответов

дана процедура:  ? = storedprocedure(14 in, 16 out)
нужно поймать результат: что вернет процедура после выполнения returnValue(int)
и что запишется в выходные параметры
+ к тому же функция возвращает несколько выборок (esql:results)

cocoon v2.1

Ориентировался на этот мануал: esql
Код

<esql:call>{? = foo(<esql:parameter direction="in"
  type="Int"><xsp:expr>1</xsp:expr></esql:parameter>)}
</esql:call>
<esql:call-results>
  <esql:use-results>
    <esql:result><xsp:expr>(ResultSet)<esql:get-object column="1" from-call="true"/></xsp:expr></esql:result>
    <esql:results>
      <esql:row-results>
        <esql:get-string column="1"/>
      </esql:row-results>
    </esql:results>
  </esql:use-results>
</esql:call-results>

это пример из этого мануала, но только я дописываю ? =
так сразу выпадают следующие ошибки:

SQL Exception: The value is not set for the parameter number 20.

Которые я ловлю с помощью тегов:
Код

<esql:error-results>
    <error> SQL Exception: <esql:get-message/> </error>
</esql:error-results>


Вот как вызов описан у меня:
Код

<esql:call >
                    {? = FLEET_FuelOperationsReport(
                        <esql:parameter direction="in" type="Int">
                            <xsp:expr>object</xsp:expr>
                        </esql:parameter>, 
                        null, 
                        <esql:parameter direction="in" type="Timestamp">
                            <xsp:expr>bd</xsp:expr>
                        </esql:parameter>, 
                        <esql:parameter direction="in" type="Timestamp">
                            <xsp:expr>ed</xsp:expr>
                        </esql:parameter>, null, null, null,
                        1, 0, 1, 0, 1, null, 1,
                        <esql:parameter direction="out" type="Int">
                            <xsp:expr>TotalRun</xsp:expr>
                        </esql:parameter>,
                        <esql:parameter direction="out" type="Int">
                            <xsp:expr>TotalTime</xsp:expr>
                        </esql:parameter>,
                        <esql:parameter direction="out" type="Int">
                            <xsp:expr>RunTime</xsp:expr>
                        </esql:parameter>,
                        [и прочие выходные параметры]
                        )}
</esql:call>


В общем посмотрел сгенерированный java файл не нашел там функции которая бы передавала указанным переменным выходные параметры
Я в недоумении. Укажите на мои ошибки
PM MAIL   Вверх
AlienRise
Дата 3.11.2009, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 1.2.2008

Репутация: нет
Всего: нет



Вообщем решил данную проблему, изрядно покопавшись в исходниках кокуна

Вот как грамотно это должно выглядеть
Код

<esql:call>{<esql:parameter direction="out" type="Int"/> = foo(
<esql:parameter direction="in" type="Int">
            <xsp:expr>1</xsp:expr>
</esql:parameter>,
<esql:parameter direction="out" type="Int"/>,
<esql:parameter direction="out" type="Double"/>)}
</esql:call>
<esql:call-results>
    <result><esql:get-int column="1" from-call="true"/></result> <!-- получаем результат выполнения хранимой процедуры-->
    <paramOut1><esql:get-int column="2" from-call="true"/><paramOut1><!-- Получаем выходные параметры цифра в свойстве "column" означает номер в порядке регистрации выходных параметров-->
    <paramOut2><esql:get-double column="3" from-call="true"/><paramOut2>
</esql:call-results>
<!-- результат первой выборки -->
    <esql:results>
      <esql:row-results>
        <esql:get-string column="NameColumn"/>
      </esql:row-results>
    </esql:results>
<!-- результат второй выборки -->
  <esql:results>
      <esql:row-results>
        <esql:get-string column="NameColumn"/>
      </esql:row-results>
    </esql:results>
<esql:no-results>
        <noresult/>
</esql:no-results>
<esql:error-results>
    <error> SQL Exception: <esql:get-message/> </error>
</esql:error-results>


Вроде на первый взгляд ничего сложного !!!! но из за не корректности примеров в документации кокуна пришлось не мало понервничать!!!!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "XML/XSLT"
diadiavova

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

Также рекомендуем Вам зайти в раздел FAQ ,раздел дополняется и, возможно, там вы увидите готовое решение.

Для ответов на часто задаваемые вопросы существует FAQ раздела. Новости можно публиковать в разделе новостей. Для статей так же есть специальный раздел

Желаем удачи в Вашем деле!


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, diadiavova.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | XML, XSL | Следующая тема »


 




[ Время генерации скрипта: 0.1719 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.