Сервер:
 
вход в систему
логин:   
пароль:  
 
 
меню
совет

Синтаксис:

<req:Call connection="имя_соединения">
  <req:Request>
    имя_пакета.имя_процедуры(параметр_1,... параметр_N, ?)
  </req:Request>
</req:Call>

Команда выполняет указанную процедуру.

имя_соединения - обязательный параметр, указывающий имя соединения с СУБД, определенное в настройках приложения.

Список входных параметров может быть произвольным, допустимые типы - NUMBER и VARCHAR2. Выходной параметр (на его месте при вызове нужно ставить знак вопроса) может быть следующего типа: NUMBER, DATE, VARCHAR2, LONG, CLOB.

Макрос для вывода результата команды (значения выходного параметра):

##RESPONSE##

Пример:

Код процедуры (пакет ORA_WEB_TEST):

  PROCEDURE call_test (in_str IN VARCHAR2, out_str OUT VARCHAR2)
  IS
  BEGIN
    out_str := 'Входной параметр: ' || in_str;
  END;

Код:

<form action="{{}}" method="post">
<input type="text" name="test" value="{{test}}"/>
<input type="submit" value="Смотреть"/>
</form>
<req:Call connection="docsDB">
  <req:Request>
    ora_web_test.call_test('{{test}}', ?)
  </req:Request>
</req:Call>
<p>
<b>Результат выполнения:</b><br/>
##RESPONSE##
</p>

Результат:

Результат выполнения:

Данный подход имеет смысл только в простых случаях. Рассмотрим более универсальный подход, предусматривающий возможность использования команд второго прохода и отлова ошибок.

Синтаксис:

<Execute>
  <req:Call connection="имя_соединения">
    <req:Request>
      имя_пакета.имя_процедуры(параметр_1,... параметр_N, ?)
    </req:Request>
  </req:Call>
  <Result>
    ...
  </Result>
  <Exception>
    ...
    <exception/>
    ...
  </Exception>
</Execute>

Здесь внутри элемента Result могут быть как XHTML-конструкции, так и команды второго прохода. Для вывода результата выполнения процедуры в данном случае используется команда второго прохода res:RESPONSE. Такие команды могут использоваться как элементы (<res:RESPONSE/>), так и часть XHTML-атрибута (например, <input type="hidden" name="name" value="^res:RESPONSE^"/>). Однако внутри атрибутов возможно использование только одной команды. В случае, когда необходимо внутрь атрибута вставить результаты нескольких команд второго прохода, нужно воспользоваться командой res:Attribute.

Внутри элемента Exception могуть быть как XHTML-конструкции, так и элемент exception, содержащий текст ошибки, если она произошла. Элемент Exception является необязательным.

Пример:

<form action="{{}}" method="post">
<input type="text" name="test" value="{{test}}"/>
<input type="submit" value="Смотреть"/>
</form>
<Execute>
  <req:Call connection="docsDB">
    <req:Request>
      ora_web_test.call_test('{{test}}', ?)
    </req:Request>
  </req:Call>
  <Result>
    <p>
    <b>Результат выполнения:</b><br/>
    <res:RESPONSE/>
    </p>
  </Result>
</Execute>

Результат:

форум
сообщить об ошибке Центр Новых Информационных Технологий