- Создать JavaScript-файл или добавить в Header Definition:
function makeResizableTextAreas(){ var els=Ext.select("textarea",true); els.each(function(el){ var dwrapped = new Ext.Resizable(el, { wrap:true, pinned:true, handles:'e', dynamic: true, width:el.getWidth(), height:el.getHeight(), minWidth:el.getWidth(), minHeight: el.getHeight() }); }) }
- Добавить в onload body вызов данной функции или использовать метод onReady фреймворка ExtJS:
Ext.onReady(function(){ Ext.BLANK_IMAGE_URL = '/i/1px_trans.gif'; // Create namespace if doesn't already exist Ext.namespace('Ext.ux'); //Здесь последовательность вызовов функций, например: makeResizableTextAreas(); });
пятница, 5 февраля 2010 г.
Application Express: использование TEXTAREA с возможностью изменения размера из фреймворка ExtJS
понедельник, 1 февраля 2010 г.
Интеграция Oracle Application Express и ExtJS
ExtJS - одна из наиболее популярных и функциональных JavaScript-библиотек для разработки веб-приложений и пользовательских интерфейсов.
Инсталляция
- Скачать последнюю версию ExtJS - http://www.extjs.com/products/extjs/download.php
- Для EPG: открыть FTP-порт в XMLDB. Для этого зайти в SQL*Plus пользователем SYSTEM:
SQL> exec dbms_xdb.setftpport('2100'); PL/SQL procedure successfully completed. SQL> alter system register; System altered.
- Для EPG: распаковать дистрибутив extJS и загрузить его на ftp://server_adress:2100/i/themes/,где server_adress - хост сервера БД
- Для EPG: закрыть FTP-порт в XMLDB. Для этого зайти в SQL*Plus пользователем SYSTEM:
SQL> exec dbms_xdb.setftpport('0'); PL/SQL procedure successfully completed. SQL> alter system register; System altered.
- Для HTTP-Server: распаковать дистрибутив extJS в директорию /i/themes, где i - image-директория Apex
Использование extJS в Oracle APEX
- Home -> Application Builder -> Application 101 -> Shared Components -> Templates -> Edit Page Template Header Definition:
- Добавить следующий фрагмент кода в HTML Header:
- Добавить следующий фрагмент в HTML Body Attribute: onload="makeResizable();"
- Добавить элемент типа TEXTAREA.
- Изменить значение Edit Page -> Display Attributes -> Cursor Focus на «Do not focus cursor»
- Запустить данную страницу.
вторник, 2 июня 2009 г.
Пример простейшего MDB-компонента
Ниже пример MDB-компонента который слушает очередь (в этом примере jms/TestQueue) и выводит содержимое сообщения в лог-сервера:
import javax.ejb.ActivationConfigProperty;
import javax.ejb.EJBException;
import javax.ejb.MessageDriven;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;
@MessageDriven(
activationConfig = {
@ActivationConfigProperty(propertyName="destinationType", propertyValue="javax.jms.Queue") ,
@ActivationConfigProperty(propertyName="connectionFactoryJndiName",propertyValue="jms/JMSConnectionFactory"),
@ActivationConfigProperty(propertyName="destinationJndiName", propertyValue="jms/TestQueue")
}
,mappedName="jms/TestQueue"
)
public class TestMDBBean implements MessageListener {
public void onMessage(Message message) {
try {
if (message instanceof TextMessage) {
TextMessage msg = (TextMessage)message;
System.out.println("Message arrived:");
System.out.println(msg.getText());
System.out.println("\n");
}
} catch (Exception e) {
throw new EJBException(e.toString());
}
}
}
пятница, 10 апреля 2009 г.
Автономные транзакции
Обработка транзакций - главная обязанность программного механизма любой базы данных, и Oracle здесь не является исключением. Чтобы понять суть дела, давайте определим, что составляет транзакцию. В Oracle транзакция - это логическая единица работы, выполняемая между точками commit/rollback (фиксация/откат) одним или более SQL- (или PL/SQL-) предложениями. Это означает, что в программе, которая явно содержит предложение commit или rollback, все измененные в текущей транзакции данные будут или зафиксированы (commit) в базе, или будет произведен откат (rollback), и все изменения будут отменены.
Это может представить проблему при обработке ошибок, как проиллюстрировано ниже:
Автономная транзакция может разрешить эту проблему.
Автономная транзакция отделяется от начальной транзакции, создавая, тем самым, возможность для прикладной программы независимо фиксировать/откатывать (commit/rollback) свои транзакции.
Автономные транзакции должны быть объявлены с использованием фразы
PRAGMA AUTONOMOUS_TRANSACTION в PL/SQL-программе. Вот как выглядит декларация подпрограммы (routine), обрабатывающей ошибку:
Вот пример, как мы можем "переделать" ("retool") подпрограмму p_update_employee:
Источник: Oracle Professional eXTRA #2.9, eNewsletter Autonomous Transactions
Это может представить проблему при обработке ошибок, как проиллюстрировано ниже:
CREATE OR REPLACE PROCEDURE p_update_employee
IS
BEGIN
-- ...
-- логика приложения
--
COMMIT;
--
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
INSERT INTO error_logs VALUES (20101, sqlerrm);
COMMIT;
END;
/
В процедуре p_update_employee обращение к фразе WHEN OTHERS производится по любой ошибке Оracle. Цель - записать сообщение об ошибке в таблицу приложения, названную здесь error_logs. Поскольку мы хотим выделить ошибки, обнаруженные логикой приложения с указанием породивших их проблем, нам надо выполнить явный откат до задействования предложения INSERT, чтобы только затем последующий commit зафиксирует сообщение об ошибке. Такая реализация представляется несколько неуклюжей, поскольку программа реально включает в себя два процессных трека - логику приложения и регистрацию ошибок.Автономная транзакция может разрешить эту проблему.
Автономная транзакция отделяется от начальной транзакции, создавая, тем самым, возможность для прикладной программы независимо фиксировать/откатывать (commit/rollback) свои транзакции.
Автономные транзакции должны быть объявлены с использованием фразы
PRAGMA AUTONOMOUS_TRANSACTION в PL/SQL-программе. Вот как выглядит декларация подпрограммы (routine), обрабатывающей ошибку:
CREATE OR REPLACE PROCEDURE p_error(
i_error IN NUMBER,
i_text IN VARCHAR2)
IS
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
INSERT INTO error_logs (error_code, error_text)
VALUES (i_error, i_text);
--
COMMIT;
--
END;
/
Теперь процедура p_error работает независимо от вызываемой во время выполнения этой подпрограммы.Вот пример, как мы можем "переделать" ("retool") подпрограмму p_update_employee:
CREATE OR REPLACE PROCEDURE p_update_employee
IS
lx_test EXCEPTION;
BEGIN
-- ...
-- Логика приложения
--
RAISE lx_test;
--
COMMIT;
--
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
p_error(20101, sqlerrm);
END;
/
Заметим, что в секции EXCEPTION фраза WHEN OTHERS вызывает откат (rollback) данных, измененных приложением, тогда как подпрограмма p_error вызывает фиксацию (commit) только, чтобы сохранить последнюю вставленную запись в журнал ошибок (error log). Источник: Oracle Professional eXTRA #2.9, eNewsletter Autonomous Transactions
Количество изменённых записей
Пример процедуры:
Вывод:
BEGIN
UPDATE emp e SET e.mgr=7698 WHERE e.job='SALESMAN';
dbms_output.put_line(sql%rowcount||' ROWS UPDATED');
END;
Вывод:
set serveroutput on
4 ROWS UPDATED
Подписаться на:
Сообщения (Atom)