<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1045816305977712294</id><updated>2012-02-15T17:58:27.484+04:00</updated><category term='url'/><category term='apex'/><category term='checkbox'/><category term='javascript'/><category term='translation'/><category term='news'/><category term='howto'/><category term='sqldeveloper'/><category term='compile'/><category term='app_version'/><category term='oracle'/><category term='firefox'/><category term='certification'/><category term='report'/><category term='sql'/><category term='tips'/><category term='debian'/><category term='search'/><category term='forms'/><category term='performance'/><category term='eclipse'/><category term='tora'/><category term='oracle-client'/><category term='svn'/><category term='deploy'/><title type='text'>Записки об Oracle Application Express и не только....</title><subtitle type='html'>Блог посвящен разработке и поддержке приложений, созданных с помощью Oracle Application Express (framework известный так же, как Apex, HTML DB, WebDB)</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://apex-dev.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://apex-dev.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Timoshinin Evgeny</name><uri>http://www.blogger.com/profile/16019140023057398100</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>43</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1045816305977712294.post-2306084466346898377</id><published>2009-05-29T07:37:00.000+04:00</published><updated>2009-05-29T08:43:54.189+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle-client'/><title type='text'>Установка Oracle Instant Client в Debian. Ссылка</title><content type='html'>По роду своих занятий, часто приходится работать с Oracle с Debian машин. Как-то я уже немного вскольз рассказывал, как установить Oracle Instant Client (см. &lt;a href="http://apex-dev.blogspot.com/2008/01/tora-debian.html"&gt;Компиляция TOra в Debian&lt;/a&gt;). &lt;br /&gt;Но сегодня мне подкинули ссылочку на замечательную статью, где описывается аж целых два способа установки Oracle Instant Client. Понравилось: подробно расписано для чего это нужно и как выполнять установку. Рекомендую - &lt;a href="http://debianworld.ru/articles/ustanovka-oracle-instant-client-v-debian-ubuntu/"&gt;Установка Oracle Instant Client в Debian / Ubuntu &lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-0876573933122504";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-04-11: http://apex-dev.blogspot.com/
google_ad_channel = "6107414183";
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1045816305977712294-2306084466346898377?l=apex-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://debianworld.ru/articles/ustanovka-oracle-instant-client-v-debian-ubuntu/' title='Установка Oracle Instant Client в Debian. Ссылка'/><link rel='replies' type='application/atom+xml' href='http://apex-dev.blogspot.com/feeds/2306084466346898377/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1045816305977712294&amp;postID=2306084466346898377' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/2306084466346898377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/2306084466346898377'/><link rel='alternate' type='text/html' href='http://apex-dev.blogspot.com/2009/05/oracle-instant-client-debian.html' title='Установка Oracle Instant Client в Debian. Ссылка'/><author><name>Timoshinin Evgeny</name><uri>http://www.blogger.com/profile/16019140023057398100</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1045816305977712294.post-6445816034896071859</id><published>2009-04-24T07:00:00.001+04:00</published><updated>2009-04-24T11:43:07.093+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='url'/><category scheme='http://www.blogger.com/atom/ns#' term='apex'/><title type='text'>Понимание формата URL в Application Express. Часть 2.</title><content type='html'>Продолжение поста &lt;a href="http://apex-dev.blogspot.com/2009/04/url-application-express.html"&gt;"Понимание формата URL в Application Express. Часть 1."&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;b&gt;Вызов страницы, используя синонимы приложения и страницы&lt;/b&gt;&lt;br /&gt;Синоним для приложения или страницы не может содержать пробелов и не чувствительный к регистру. Ниже приведен пример запроса к странице, в котором используются синонимы страницы и приложения. Выполняется запрос к странице "home" приложения "myapp", используя текущую сессию: &lt;br /&gt;&lt;code&gt;f?p=myapp:home:&amp;APP_SESSION.&lt;/code&gt;&lt;br /&gt;где:&lt;ul&gt;&lt;br /&gt; &lt;li&gt;myapp - синоним для приложения&lt;/li&gt;&lt;br /&gt; &lt;li&gt;home - синоним для страницы&lt;/li&gt;&lt;br /&gt; &lt;li&gt;APP_SESSION - идентифифкатор сессии&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Синоним приложения должен быть уникален в рамках рабочей области (workspace). Если приложения, располагающиеся в разнызх рабочих областях, имеют одинаковые синонимы, необходимо использовать "&amp;c" аргумент, чтобы указать имя рабочей области. Например:&lt;br /&gt;&lt;code&gt;f?p=common_alias:home:&amp;APP_SESSION.&amp;c=WORKSPACE_A&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Использование 0 вместо Session Id&lt;/b&gt; &lt;br /&gt;Если страница APEX-приложения является обще доступной и не требует аутентификации, можно использовать "0" вместо идентификатора сессии.&lt;br /&gt;&lt;br /&gt;При запросе страницы, в URL которой стоит 0 вместо session id, Application Express присваивает новый session id и отсылает его вместе с cookie обратно браузеру.&lt;br /&gt;Таким образом, просматривая обще доступные страницы, можно видеть, что все генерируемые ссылки на обще доступные страницы будут содержать "0" в качестве session id. Однако, на самом деле Application Express будет использовать session id из cookie, чтобы переменные приложения были в актуальном состоянии.&lt;br /&gt;&lt;br /&gt;Эта фича полезна, когда необходимо спрятать настоящий идентификатор сессии (session id). Это бывает полезно как минимум в двух случаях:&lt;ul&gt;&lt;br /&gt;&lt;li&gt; Создание закладок пользователями. Нет необходимости сохранять номер сессии в ссылке закладки. &lt;/li&gt;&lt;br /&gt;&lt;li&gt; Поисковые системы. Номер сессии будет недоступен для ботов поисковых систем. Естевственным следствие этого будет ликвидация дублирования контента в поисковых системах, так как при каждом обращении бота поисковой системы на одну и ту же страницу, будет гарантированно получен один и тот же URL.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;   &lt;br /&gt;&lt;b&gt;Основы строк подстановки (Substitution Strings)&lt;/b&gt;&lt;br /&gt;Строки подстановки можно использовать в шаблонах страниц или в регионах для того, чтобы заменить символьную строку каким-либо значением.&lt;br /&gt;В Application Builder можно использовать строки подстановки следующим образом:&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Ссылки на элементы приложения или страницы. Синтаксис:&lt;code&gt;&amp;ITEM.&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Использовть встроенные строки подстановки (см. &lt;a href="http://download.oracle.com/docs/cd/E10513_01/doc/appdev.310/e10499/concept.htm#HTMDB03024"&gt;оффициальную документацию&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-0876573933122504";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-04-11: http://apex-dev.blogspot.com/
google_ad_channel = "6107414183";
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1045816305977712294-6445816034896071859?l=apex-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apex-dev.blogspot.com/feeds/6445816034896071859/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1045816305977712294&amp;postID=6445816034896071859' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/6445816034896071859'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/6445816034896071859'/><link rel='alternate' type='text/html' href='http://apex-dev.blogspot.com/2009/04/url-application-express-2.html' title='Понимание формата URL в Application Express. Часть 2.'/><author><name>Timoshinin Evgeny</name><uri>http://www.blogger.com/profile/16019140023057398100</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1045816305977712294.post-4511153179965005315</id><published>2009-04-01T05:55:00.015+04:00</published><updated>2009-04-01T11:09:57.451+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='url'/><category scheme='http://www.blogger.com/atom/ns#' term='apex'/><title type='text'>Понимание формата URL в Application Express. Часть 1.</title><content type='html'>URL, которые отображаются для каждой страницы, однозначно определяют:&lt;br /&gt;&lt;ul&gt; &lt;li&gt;Адрес Application Express&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Идентификатор приложения (application ID) - уникальное число, однозначно идентифицирующее приложение. Уникален в рамках рабочей области (workspace)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Номер страницы (page number) - число, однозначно идентифицирующее страницу в приложении. Уникально в рамках приложения.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Идентификатор сессии (session ID)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Приложения и страницы могут иметь символьные псевдонимы (alphanumeric aliases).Так же, как и идентификаторы приложений и страниц, псевдоним приложения уникален в рамках рабочей области (workspace), а псевдоним страницы уникален в рамках приложения.&lt;br /&gt;&lt;br /&gt;При запуске приложения Application Express генерирует идентификатор сессии, который является ключем для доступа к значениям переменных приложения.&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;h2&gt;Понимание URL для страниц&lt;/h2&gt;&lt;br /&gt;Все очень просто. Достаточно рассмотреть пример:&lt;code&gt;&lt;br /&gt;http://apex.oracle.com/pls/apex/f?p=4350:1:220883407765693447&lt;br /&gt;&lt;/code&gt;где:&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;i&gt;apex.oracle.com&lt;/i&gt; - адрес сервера&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;i&gt;pls&lt;/i&gt; - признак использования mod_plsql&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;i&gt;apex&lt;/i&gt; - название дескриптора доступа к БД (DAD). DAD описывает, как HTTP-сервер соединяется с сервером БД, чтобы обработать HTTP-запрос. Значение по умолчанию - apex.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;i&gt;f?p=&lt;/i&gt; - префикс, используемый Oracle Application Express&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;i&gt;4350&lt;/i&gt; - вызываемое приложение (application ID)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;i&gt;1&lt;/i&gt; - вызываемая страницы приложения(page number)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;i&gt;220883407765693447&lt;/i&gt; - идентификатор сессии(session ID)&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;h2&gt;Использование синтаксиса "f?p"&lt;/h2&gt;&lt;br /&gt;Для создания переходов между страницами можно использовать следующий синтаксис:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;    f?p=App:Page:Session:Request:Debug:ClearCache:itemNames:itemValues:PrinterFriendly&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th&gt;Синтаксис&lt;/th&gt; &lt;th&gt;Описание&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" align="left"&gt;App&lt;/td&gt;&lt;td&gt;Идентификатор (application ID) или символьный псевдоним (alias) приложения &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" align="left"&gt;Page&lt;/td&gt;&lt;td&gt;Номер (page number) или символьный псевдоним (alias) страницы &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" align="left"&gt;Session&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Идентификатор сессии (session ID). Идентификатор сесси имеет смысл указывать в том случае, если создается ссылка на страницу, в которой необходимо использовать  теже переменные, что и в текущей странице. Получить значение идентификатор текущей сессии можно следующими способами:&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Строка подстановки: "&amp;amp;SESSION."&lt;/li&gt;&lt;li&gt;PL/SQL: "V('SESSION')"&lt;/li&gt;&lt;li&gt;Bind переменная: ":APP_SESSION"&lt;/li&gt; &lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" align="left"&gt;Request&lt;/td&gt;&lt;td&gt;Выставляется при нажатии кнопки на странице приложения. Заполняется именем нажатой кнопки. Получить значение можно следующими способами:&lt;ul&gt;&lt;li&gt;Строка подстановки: "&amp;amp;REQUEST."&lt;/li&gt;&lt;li&gt;PL/SQL: "V('REQUEST')"&lt;/li&gt;&lt;li&gt;Bind переменная: ":REQUEST"&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" align="left"&gt;Debug&lt;/td&gt;&lt;td&gt;Отвечает за вывод отладочной информации при обработке страницы. Допустимые значения: "NO", "YES". Получить значение можно следующими способами:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Строка подстановки: "&amp;amp;DEBUG."&lt;/li&gt;&lt;li&gt;PL/SQL: "V('DEBUG')"&lt;/li&gt;&lt;li&gt;Bind переменная: ":DEBUG"&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" align="left"&gt;ClearCache&lt;/td&gt;&lt;td&gt;Очищает кэш. Выставляет значение указанных переменных в NULL. Пример: &lt;code&gt;f?p=100:5:&amp;amp;APP_SESSION.::NO:THE_EMPNO,THE_DEPTNO&lt;/code&gt; Очищает кэш переменных THE_EMPNO и THE_DEPTNO.&lt;br /&gt;Ключевое слово "RP" вызывает сброс навигации (region pagination) на странице. Например:&lt;br /&gt;&lt;code&gt;f?p=6000:6003:&amp;amp;APP_SESSION.::NO:RP,6004,6014&lt;/code&gt;&lt;br /&gt;Очищает состояние всех переменных на страницах 6004 и 6014. Сбрасывает состояние навигации (region pagination -RP) на странице 6003.&lt;br /&gt;Ключевое слово "APP" вызывает сброс кэша во всем приложении.&lt;br /&gt;Ключевое слово "SESSION" работает аналогично ключевому слову "APP", за исключением того, что очищает значение переменных, связанных со всеми приложениями, которые были использованы в рамках заданной сессии.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" align="left"&gt;itemNames&lt;/td&gt;&lt;td&gt;Список переменных через запятую, для которых необходимо выставить значение.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" align="left"&gt;itemValues&lt;/td&gt;&lt;td&gt;Список значений переменных через запятую. Не допустимо использование двоеточия (:) в качестве значения. Допустимо использование запятой в качестве значения, если значение заключено в обратные слеши (\123,45\).&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" align="left"&gt;PrinterFriendly&lt;/td&gt;&lt;td&gt;Определяет, будет ли страница выведена в режиме "на печать" (значение - "Yes"). Может быть использовано для условного вывода того или иного элемента страницы при выводе на печать. Получить значение можно следующими способом: V('PRINTER_FRIENDLY').&lt;br /&gt;Если задано, то Application Express не будет отображать закладки или навигационные области. Кроме того, все элементы форм будут выводиться как текстовые поля.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Продолжение следует...&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-0876573933122504";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-04-11: http://apex-dev.blogspot.com/
google_ad_channel = "6107414183";
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1045816305977712294-4511153179965005315?l=apex-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apex-dev.blogspot.com/feeds/4511153179965005315/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1045816305977712294&amp;postID=4511153179965005315' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/4511153179965005315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/4511153179965005315'/><link rel='alternate' type='text/html' href='http://apex-dev.blogspot.com/2009/04/url-application-express.html' title='Понимание формата URL в Application Express. Часть 1.'/><author><name>Timoshinin Evgeny</name><uri>http://www.blogger.com/profile/16019140023057398100</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1045816305977712294.post-8521786486527626898</id><published>2008-08-01T06:54:00.000+04:00</published><updated>2008-08-01T12:15:18.239+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='apex'/><title type='text'>Недокументированная опция для статических LOV</title><content type='html'>Согласно документации, статический список значений (STATIC, STATIC2) определяется следующим образом:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;STATIC[2]:Display Value[;Return Value],Display Value[;Return Value]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;То есть, получается, чтобы вывести &lt;b&gt;Display Value&lt;/b&gt; в котором содержалась бы запятая - невозможно. Однако, как выяснилось, это не совсем так... &lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;Оказывается для STATIC, STATIC2 есть недокументированная опция! (Спасибо за это &lt;a href="http://www.inside-oracle-apex.com/2008/04/undocumented-option-for-static-list-of.html"&gt;Patrick Wolf&lt;/a&gt;). Недокументированная опция выглядит следующим образом:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;STATIC[2](lov-entries-sep,display-return-sep):Display Value[&lt;display-return-sep&gt;Return Value]&lt;lov-entries-sep&gt;Display Value[&lt;display-return-sep&gt;Return Value]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;То есть, чтобы вывести &lt;b&gt;Display Value&lt;/b&gt; с запятой, можно, например, определить LOV следующим образом:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;STATIC2(;,=):Показывать, но не учитывать=1; Учытвать, но не показывать=2;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-0876573933122504";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-04-11: http://apex-dev.blogspot.com/
google_ad_channel = "6107414183";
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1045816305977712294-8521786486527626898?l=apex-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apex-dev.blogspot.com/feeds/8521786486527626898/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1045816305977712294&amp;postID=8521786486527626898' title='Комментарии: 4'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/8521786486527626898'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/8521786486527626898'/><link rel='alternate' type='text/html' href='http://apex-dev.blogspot.com/2008/08/lov.html' title='Недокументированная опция для статических LOV'/><author><name>Timoshinin Evgeny</name><uri>http://www.blogger.com/profile/16019140023057398100</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1045816305977712294.post-1812559831434048401</id><published>2008-02-28T06:28:00.000+03:00</published><updated>2008-02-28T11:38:25.007+03:00</updated><title type='text'>apex.oracle.com обновился до версии 3.1</title><content type='html'>Официальный общедоступный &lt;a href="http://apex.oracle.com/"&gt;тестовый инстанс Oracle Application Express&lt;/a&gt; был обновлен до версии 3.1. Очевидно, что скоро новая версия Apex будет доступна для загрузки.&lt;br /&gt;&lt;span class="fullpost"&gt; Те,кто не подписывался на пробную версию Apex 3.1 (evaluation version) или ничего еще не читал, то с новыми фичами можно ознакомиться в статье &lt;a href="http://www.oracle.com/technology/products/database/application_express/html/3.1_new_features.html"&gt;"Release 3.1 New Features Sample Application"&lt;/a&gt;. &lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-0876573933122504";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-04-11: http://apex-dev.blogspot.com/
google_ad_channel = "6107414183";
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1045816305977712294-1812559831434048401?l=apex-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apex-dev.blogspot.com/feeds/1812559831434048401/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1045816305977712294&amp;postID=1812559831434048401' title='Комментарии: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/1812559831434048401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/1812559831434048401'/><link rel='alternate' type='text/html' href='http://apex-dev.blogspot.com/2008/02/apexoraclecom-31.html' title='apex.oracle.com обновился до версии 3.1'/><author><name>Timoshinin Evgeny</name><uri>http://www.blogger.com/profile/16019140023057398100</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1045816305977712294.post-8863621313179798027</id><published>2008-01-16T23:18:00.001+03:00</published><updated>2008-03-25T11:19:47.300+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><category scheme='http://www.blogger.com/atom/ns#' term='howto'/><category scheme='http://www.blogger.com/atom/ns#' term='tora'/><category scheme='http://www.blogger.com/atom/ns#' term='compile'/><title type='text'>Компиляция TOra в Debian</title><content type='html'>&lt;a href="http://tora.sourceforge.net/"&gt;TOra&lt;/a&gt; - расшифровывается как "Toolkit For Oracle" и представляет из себя IDE для таких СУБД как Oracle, MySQL, PostgreSQL. На данный момент является одной из трех полноценных Oracle IDE под Linux (остальные две - это "SQL Developer" от Oracle и "Aqua Data Studio" от AquaFold). Концептуальное отличие - язык программирования исходного кода: "SQL Developer", "Aqua Data Studio" - Java, "TOra" - C++.&lt;br /&gt;&lt;br /&gt;На днях пришлось собирать ее из исходных кодов, так как по лицензионным причинам, в стандартной сборке TOra из репозитария Debian GNU/Linux не включена поддержка Oracle.&lt;br /&gt;&lt;span class="fullpost"&gt; &lt;br /&gt;Все работы велись в Debian Lenny:&lt;br /&gt;&lt;code&gt; $ uname -a&lt;br /&gt;Linux Debian4Test 2.6.22-3-686 #1 SMP Mon Nov 12 08:32:57 UTC 2007 i686 GNU/Linux&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Версия TOra: &lt;code&gt;&lt;br /&gt;$ ls -l /usr/src/tora-1.3.22/&lt;br /&gt;-rw-r--r--  1 root src  3496227 2008-01-15 18:19 tora-1.3.22.tar.gz&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Итак... поехали...&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;b&gt;Получение Oracle Instant Client&lt;/b&gt;&lt;/li&gt;Скачиваем следующие пакеты:&lt;ul&gt;&lt;br /&gt;       &lt;li&gt;&lt;a href="http://www.michelem.org/wp-content/tora-oracle/oracle-instantclient-basiclite_10.2.0.3-2_i386.deb"&gt; oracle-instantclient-basiclite_10.2.0.3-2_i386.deb&lt;/a&gt; &lt;/li&gt;&lt;br /&gt;       &lt;li&gt; &lt;a href="http://www.michelem.org/wp-content/tora-oracle/oracle-instantclient-devel_10.2.0.3-2_i386.deb"&gt;oracle-instantclient-devel_10.2.0.3-2_i386.deb&lt;/a&gt; &lt;/li&gt;&lt;br /&gt;       &lt;li&gt; &lt;a href="http://www.michelem.org/wp-content/tora-oracle/oracle-instantclient-sqlplus_10.2.0.3-2_i386.deb"&gt;oracle-instantclient-sqlplus_10.2.0.3-2_i386.deb&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt; &lt;br /&gt;Или, как вариант, можно скачать соответствующие *.rpm пакеты с сайта &lt;a href="http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/linuxsoft.html"&gt;Oracle&lt;/a&gt; и с помощью утилиты "alien" преобразовать их в *.deb.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Установка Oracle Instant Client&lt;/b&gt;&lt;/li&gt; &lt;code&gt;&lt;br /&gt;   $ sudo dpkg -i oracle-instantclient-basic_10.2.0.3-2_i386.deb&lt;br /&gt;   $ sudo dpkg -i oracle-instantclient-devel_10.2.0.3-2_i386.deb&lt;br /&gt;   $ sudo dpkg -i oracle-instantclient-sqlplus_10.2.0.3-2_i386.deb &lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Проверяем, куда был установлен клиент Oracle:&lt;code&gt;&lt;br /&gt;$ whereis oracle&lt;br /&gt;oracle: /usr/lib/oracle /usr/include/oracle /usr/share/oracle&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Создание файла TNSNAMES.ORA&lt;/b&gt;&lt;/li&gt; Создаем файл /usr/lib/oracle/tnsnames.ora и заполняем его необходимыми данными для соединения с экземплярами БД Oracle.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Настройка кэша динамических библиотек&lt;/b&gt;&lt;/li&gt; В файл /etc/ld.so.conf добавляем следующую строку:&lt;br /&gt;&lt;code&gt;/usr/lib/oracle/10.2.0.3/client/lib &lt;code&gt;&lt;br /&gt;&lt;br /&gt;После чего перегружаем кэш:&lt;br /&gt;&lt;code&gt; $ sudo ldconfig &lt;code&gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;/code&gt;&lt;li&gt;&lt;b&gt;Настройка переменных окружения&lt;/b&gt;&lt;/li&gt; Добавляем следующие строки в файл  /etc/profile: &lt;code&gt;&lt;br /&gt;   LD_LIBRARY_PATH=/usr/lib/oracle/10.2.0.3/client/lib:$LD_LIBRARY_PATH&lt;br /&gt;   TNS_ADMIN=/usr/lib/oracle&lt;br /&gt;   export LD_LIBRARY_PATH TNS_ADMIN&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/code&gt;&lt;li&gt;&lt;b&gt;Получение и распаковка исходных кодов TOra&lt;/b&gt;&lt;/li&gt; Исходный код можно загрузить с &lt;a href="http://tora.sf.net/"&gt;оф. сайта&lt;/a&gt;: &lt;code&gt;&lt;br /&gt;   $ sudo mkdir /usr/src/tora&lt;br /&gt;   $ cd /usr/src/tora&lt;br /&gt;   $ wget http://switch.dl.sourceforge.net/sourceforge/tora/tora-1.3.22.tar.gz&lt;br /&gt;   $ sudo tar zxvf tora-1.3.22.tar.gz&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Подготовка к пересборке TOra&lt;/b&gt;&lt;/li&gt; Устанавливаем необходимые модули:&lt;code&gt;&lt;br /&gt;   $ sudo aptitude install g++ gcc autoconf automake flex zlib1g-dev docbook-xsl&lt;br /&gt;   $ sudo aptitude install libqt3-mt-dev libqt3-compat-headers&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Сборка TOra&lt;/b&gt;&lt;/li&gt; Переходим в директорию с исходным кодом и выполняем конфигурацию:&lt;code&gt;&lt;br /&gt;   $ cd /usr/src/tora/tora-1.3.22/&lt;br /&gt;   $ ./configure --with-oracle=$ORACLE_HOME --with-oci-version=10G CC=gcc-4.2 --without-kde --with-xinerama&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;В результате последней операции получаем сообщение об ошибке:&lt;code&gt;&lt;br /&gt;   ...&lt;br /&gt;   checking whether uic supports -nounload ... yes&lt;br /&gt;   checking if STL implementation is SGI like... yes&lt;br /&gt;   checking for oracle... checking oci works... yes&lt;br /&gt;   checking for qscintilla... configure: error: Couldn't compile a simple QScintilla application. See config.log or specify its location with --with-qscintilla-includes&lt;br /&gt;   make: *** [configure-stamp] Ошибка 1&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;То есть, в системе не оказалось пакета "libqscintilla-dev". Скачиваем его и повторяем попытки компиляции:&lt;code&gt;&lt;br /&gt;   $ wget http://ftp.pl.debian.org/debian/pool/main/q/qscintilla/libqscintilla-dev_1.7.1-2_all.deb&lt;br /&gt;   $ sudo dpkg -i libqscintilla-dev_1.7.1-2_all.deb&lt;br /&gt;   $ ./configure --with-oracle=$ORACLE_HOME --with-oci-version=10G CC=gcc-2.95 --without-kde --with-xinerama&lt;br /&gt;   $ make&lt;br /&gt;   $ sudo make install&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;На этот раз ошибок не появилось.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Запуск TOra&lt;/b&gt;&lt;/li&gt; Проверяем, где располагается TOra:&lt;code&gt;&lt;br /&gt;$ whereis tora&lt;br /&gt;tora: /usr/bin/tora /usr/lib/tora /usr/local/tora /usr/share/tora /usr/share/man/man1/tora.1.gz&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Запускаем IDE:&lt;code&gt;&lt;br /&gt;/usr/bin/tora&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-0876573933122504";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-04-11: http://apex-dev.blogspot.com/
google_ad_channel = "6107414183";
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1045816305977712294-8863621313179798027?l=apex-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apex-dev.blogspot.com/feeds/8863621313179798027/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1045816305977712294&amp;postID=8863621313179798027' title='Комментарии: 23'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/8863621313179798027'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/8863621313179798027'/><link rel='alternate' type='text/html' href='http://apex-dev.blogspot.com/2008/01/tora-debian.html' title='Компиляция TOra в Debian'/><author><name>Timoshinin Evgeny</name><uri>http://www.blogger.com/profile/16019140023057398100</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>23</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1045816305977712294.post-3078056438418869259</id><published>2007-12-24T23:34:00.000+03:00</published><updated>2007-12-25T16:44:39.081+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='apex'/><category scheme='http://www.blogger.com/atom/ns#' term='translation'/><title type='text'>Официальный перевод "Apex. Sizing Up Performance"</title><content type='html'>Около полугода назад я делал перевод статьи по оптимизации производительность Apex приложений - &lt;a href="http://www.oracle.com/technology/oramag/oracle/07-jan/o17browser.html"&gt;"Sizing Up Performance"&lt;/a&gt;:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://apex-dev.blogspot.com/2007/05/1.html"&gt;Повышаем производительность (часть 1)&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://apex-dev.blogspot.com/2007/05/2.html"&gt;Повышаем производительность (часть 2)&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://apex-dev.blogspot.com/2007/05/3.html"&gt;Повышаем производительность (часть 3)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;Теперь же есть возможность оценить ее официальный перевод :), ознакомиться с которым можно в декабрьском номере русской версии Oracle Magazine - &lt;a href="http://www.oracle.com/global/ru/oramag/dec2007/w_dev_performance.html"&gt;"Оценка производительности"&lt;/a&gt;.&lt;br /&gt;Читаем, сравниваем....&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-0876573933122504";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-04-11: http://apex-dev.blogspot.com/
google_ad_channel = "6107414183";
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1045816305977712294-3078056438418869259?l=apex-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apex-dev.blogspot.com/feeds/3078056438418869259/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1045816305977712294&amp;postID=3078056438418869259' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/3078056438418869259'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/3078056438418869259'/><link rel='alternate' type='text/html' href='http://apex-dev.blogspot.com/2007/12/apex-sizing-up-performance.html' title='Официальный перевод &quot;Apex. Sizing Up Performance&quot;'/><author><name>Timoshinin Evgeny</name><uri>http://www.blogger.com/profile/16019140023057398100</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1045816305977712294.post-976349418417676196</id><published>2007-12-22T21:46:00.000+03:00</published><updated>2007-12-25T17:11:19.041+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='apex'/><category scheme='http://www.blogger.com/atom/ns#' term='certification'/><title type='text'>Нужна ли сертификация по APEX?</title><content type='html'>&lt;a href="http://dpeake.blogspot.com/"&gt;David Peake&lt;/a&gt;, менеджер проекта APEX, активно прорабатывает вопрос создания программы сертификации по Oracle Application Express. И в настоящий момент &lt;a href="http://dpeake.blogspot.com/2007/12/would-you-like-to-be-certified-oracle.html"&gt;проводит&lt;/a&gt; опрос о необходимость такого курса вообще. &lt;br /&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;a href="http://apex.oracle.com/pls/otn/f?p=33676:1"&gt;Опрос&lt;/a&gt; состоит из нескольких экранов по 3-5 вопросов. Суть вопросов: направление проф. деятельности, используете ли APEX и в каком качестве и мнение насчет необходимости сертификации по APEX. &lt;br /&gt;&lt;br /&gt;Исследование будет проводится до середины января 2008. Так что если есть желание оставить свое мнение - не откладывайте - времени осталось не много... ибо скоро НГ!!!&lt;br /&gt;PS: с наступающими праздниками!!!&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-0876573933122504";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-04-11: http://apex-dev.blogspot.com/
google_ad_channel = "6107414183";
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1045816305977712294-976349418417676196?l=apex-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apex-dev.blogspot.com/feeds/976349418417676196/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1045816305977712294&amp;postID=976349418417676196' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/976349418417676196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/976349418417676196'/><link rel='alternate' type='text/html' href='http://apex-dev.blogspot.com/2007/12/apex.html' title='Нужна ли сертификация по APEX?'/><author><name>Timoshinin Evgeny</name><uri>http://www.blogger.com/profile/16019140023057398100</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1045816305977712294.post-5903841127055989457</id><published>2007-12-04T23:52:00.000+03:00</published><updated>2007-12-25T18:06:26.294+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Запросы для получения ряда чисел</title><content type='html'>В некоторых случаях бывает необходимо получить последовательность чисел от N до M (в последнее время что-то уж очень часто возникает такая необходимость :). Дабы самому не забыть решил перечислить известные мне способы:&lt;br /&gt;&lt;span class="fullpost"&gt; &lt;code&gt;&lt;br /&gt;-- Самый простой&lt;br /&gt;Select Rownum &lt;br /&gt;  From User_Objects &lt;br /&gt; Where Rownum &lt;= 25;&lt;br /&gt;&lt;br /&gt;-- Кол-во единичек в CUBE - степень двойки&lt;br /&gt;Select Rownum &lt;br /&gt;  From (Select 1 From Dual Group By Cube(1, 1, 1, 1, 1)) &lt;br /&gt; Where Rownum &lt;= 25;&lt;br /&gt;&lt;br /&gt;-- С использованием иерархичного запроса&lt;br /&gt;Select Level &lt;br /&gt;  From Dual &lt;br /&gt;Connect By Level &lt;= 25;&lt;br /&gt;&lt;br /&gt;-- Только для 10 версии и выше&lt;br /&gt;Select y from dual&lt;br /&gt;model &lt;br /&gt;  dimension by (1 as x) measures (1 as y)&lt;br /&gt;  rules iterate (25) (y[iteration_number + 1] = iteration_number + 1);&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Есть есть еще какие-либо решения - будет интересно посмотреть...&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-0876573933122504";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-04-11: http://apex-dev.blogspot.com/
google_ad_channel = "6107414183";
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1045816305977712294-5903841127055989457?l=apex-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apex-dev.blogspot.com/feeds/5903841127055989457/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1045816305977712294&amp;postID=5903841127055989457' title='Комментарии: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/5903841127055989457'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/5903841127055989457'/><link rel='alternate' type='text/html' href='http://apex-dev.blogspot.com/2007/12/blog-post.html' title='Запросы для получения ряда чисел'/><author><name>Timoshinin Evgeny</name><uri>http://www.blogger.com/profile/16019140023057398100</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1045816305977712294.post-212320159354695514</id><published>2007-11-23T23:26:00.000+03:00</published><updated>2007-11-27T12:52:03.454+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='apex'/><title type='text'>APEX 3.1 доступен для тестирования</title><content type='html'>Буквально на днях команда Oracle Application Express анонсировала версию 3.1 для beta тестирования. Для того, чтобы получить доступ к тестовому инстансу, необходимо&lt;span class="fullpost"&gt; всего лишь &lt;a href="http://apex.oracle.com/pls/otn/f?p=eval31"&gt;зарегистрироваться&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Основная новинка - это интерактивные отчеты (Interactive Report Regions). Уже есть даже демонстрационная страничка от &lt;a href="http://dgielis.blogspot.com/"&gt;Dimitri Gielis&lt;/a&gt; - &lt;a href="http://apex.oracle.com/pls/apexbeta/f?p=319:1:3997260981153731"&gt;пример Interactive Report Regions&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Кроме того, для учета пожеланий/замечаний пользователей новой версии Apex, была создана &lt;a href="http://apex.oracle.com/pls/otn/f?p=fdbk31"&gt;страничка обратной связи&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Список новых фич:&lt;ul&gt;&lt;br /&gt;    &lt;li&gt;Application Builder &lt;/li&gt;    &lt;br /&gt;    &lt;ul&gt;  &lt;li&gt;Interactive Report Regions&lt;/li&gt;&lt;br /&gt;          &lt;li&gt;Templates &lt;/li&gt;          &lt;br /&gt;          &lt;ul&gt;  &lt;li&gt;Improve Searching of templates&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Replace Templates&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Publish Templates&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Bulk Unsubscribe of templates&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;2 New Themes&lt;/li&gt;          &lt;/ul&gt;&lt;br /&gt;          &lt;li&gt;Wizards &lt;/li&gt;          &lt;br /&gt;          &lt;ul&gt;  &lt;li&gt;Allow for early exit when creating HTML region&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Create Interactive Report Wizard&lt;/li&gt;&lt;br /&gt;                &lt;li&gt;Remove 32k limit on Create Application on a Spreadsheet&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;          &lt;li&gt;Addition of Application Groups&lt;/li&gt;&lt;br /&gt;          &lt;li&gt;Simplification of Page Group pages&lt;/li&gt;&lt;br /&gt;          &lt;li&gt;Addition of Application Date Format&lt;/li&gt;&lt;br /&gt;          &lt;li&gt;Support for Declarative Media Type&lt;/li&gt;&lt;br /&gt;          &lt;li&gt;Can view existence of run-only application (but cannot edit them)&lt;/li&gt;&lt;br /&gt;          &lt;li&gt;Display Application Name in App Builder footer&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;    &lt;li&gt;Workspace Administration &lt;/li&gt;    &lt;br /&gt;    &lt;ul&gt;  &lt;li&gt;Workspace-specific Builder Notifications&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;    &lt;li&gt;Runtime Installation&lt;/li&gt;&lt;br /&gt;    &lt;li&gt;APIs &lt;/li&gt;    &lt;br /&gt;    &lt;ul&gt;  &lt;li&gt;Augment APEX_MAIL API to support adding attachments to e-mails&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-0876573933122504";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-04-11: http://apex-dev.blogspot.com/
google_ad_channel = "6107414183";
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1045816305977712294-212320159354695514?l=apex-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apex-dev.blogspot.com/feeds/212320159354695514/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1045816305977712294&amp;postID=212320159354695514' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/212320159354695514'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/212320159354695514'/><link rel='alternate' type='text/html' href='http://apex-dev.blogspot.com/2007/11/apex-31.html' title='APEX 3.1 доступен для тестирования'/><author><name>Timoshinin Evgeny</name><uri>http://www.blogger.com/profile/16019140023057398100</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1045816305977712294.post-4237023485865839690</id><published>2007-10-01T23:08:00.000+04:00</published><updated>2007-10-03T20:07:11.381+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='howto'/><category scheme='http://www.blogger.com/atom/ns#' term='apex'/><category scheme='http://www.blogger.com/atom/ns#' term='svn'/><title type='text'>Вывод ревизии subversion в приложениях Apex.</title><content type='html'>Как уже упоминалось &lt;a href="http://apex-dev.blogspot.com/2007/05/apex-1-export.html"&gt;ранее&lt;/a&gt;, зачастую приложение разворачивается на нескольких площадках. Соответственно, вполне логична ситуация, когда на двух и более площадках будут находиться различные версии одного и того же приложения. Поэтому достаточно часто в GUI выводят этот самый номер версии и, как правило, весь этот GUI распространяется по площадкам с помощью системы управлениями версиями &lt;a href="http://subversion.tigris.org/"&gt;Subversion&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Далее будет рассматриваться ситуация, когда приложение Oracle Application Express находится под управлением системы контроля версиями Subversion и стоит задача вывести в интерфейс номер svn-ревизии приложения.&lt;br /&gt;&lt;br /&gt;&lt;span class="fullpost"&gt; &lt;b&gt;Теория&lt;/b&gt;&lt;br /&gt;Суть решения заключается в использовании одной из функциональностей Subversion - &lt;a href="http://svnbook.red-bean.com/nightly/ru/svn.advanced.props.special.keywords.html"&gt; Keyword Substitution&lt;/a&gt;, которая позволяет при сохранении изменений выполнять замены ключевых слов. То есть, в файле, находящемся под управлением Subversion, может выводиться информация о дате или авторе изменения, о номере ревизии и т.д.).&lt;br /&gt;&lt;br /&gt;Решение поставленной задачи состоит из нескольких этапов:&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Объявить строку замены (&lt;a href="http://download.oracle.com/docs/cd/B32472_01/doc/appdev.300/b32471/concept.htm#BEIFGFJF"&gt;Substitution String&lt;/a&gt;) в apex-приложении&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Изменить шаблон приложения таким образом, чтобы использовалась новая строка подстановки&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Включить функциональность Keyword Substitution для файла приложения в Subversion&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Практика. Определение строки замены&lt;/b&gt;&lt;br /&gt;Для того чтобы определить свою собственную строку замены, необходимо перейти в "Shared Components -&gt; Application -&gt; Definition":&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_rOh27G9-PIg/RwO5bTF5BkI/AAAAAAAAANk/0yhGDfl5mXM/s1600-h/01.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_rOh27G9-PIg/RwO5bTF5BkI/AAAAAAAAANk/0yhGDfl5mXM/s320/01.JPG" alt="" id="BLOGGER_PHOTO_ID_5117137480255604290" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;где перейти в раздел "Substitutions" и добавить новую строку замены, например SVN_REV (значение этой строки важно и изменять его не следует - "$Rev $". Это связано с особенностями работы Subversion - см. документацию по &lt;a href="http://svnbook.red-bean.com/nightly/ru/svn.advanced.props.special.keywords.html"&gt; Subversion. Keyword Substitution&lt;/a&gt;):&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_rOh27G9-PIg/RwO5bjF5BlI/AAAAAAAAANs/XXLaFjLyvsc/s1600-h/02.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_rOh27G9-PIg/RwO5bjF5BlI/AAAAAAAAANs/XXLaFjLyvsc/s320/02.JPG" alt="" id="BLOGGER_PHOTO_ID_5117137484550571602" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Теперь, если посмотреть файл экспорта приложения (как это сделать описывалось &lt;a href="http://apex-dev.blogspot.com/2007/05/apex-1-export.html"&gt;ранее&lt;/a&gt;), то можно увидеть приблизительно такие строки (можно найти поиском по фразе "svn"):&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  p_substitution_string_01 =&gt; 'SVN_REV',&lt;br /&gt;  p_substitution_value_01  =&gt; '$Rev: $',&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;То есть, значение строки подстановки в файле экспорта лежит в открытом виде, которое можно изменять как угодно. Это нам пригодиться.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Практика. Изменение шаблона&lt;/b&gt;&lt;br /&gt;Для того чтобы вывести номер версии в GUI, необходимо изменить шаблон, который отвечает за общий вид формы. Для чего необходимо перейти в "Shared Components -&gt; User Interface -&gt; Templates" и выбрать шаблон страницы:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_rOh27G9-PIg/RwO5bjF5BmI/AAAAAAAAAN0/fQsSwnBo2AM/s1600-h/03.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_rOh27G9-PIg/RwO5bjF5BmI/AAAAAAAAAN0/fQsSwnBo2AM/s320/03.JPG" alt="" id="BLOGGER_PHOTO_ID_5117137484550571618" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_rOh27G9-PIg/RwO5bzF5BnI/AAAAAAAAAN8/xA9rr9vCYh4/s1600-h/04.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_rOh27G9-PIg/RwO5bzF5BnI/AAAAAAAAAN8/xA9rr9vCYh4/s320/04.JPG" alt="" id="BLOGGER_PHOTO_ID_5117137488845538930" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;После этого, необходимо прописать в шаблоне созданную ранее строку подстановки "SVN_REV", например так:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_rOh27G9-PIg/RwO5bzF5BoI/AAAAAAAAAOE/5iwmg53FlzI/s1600-h/05.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_rOh27G9-PIg/RwO5bzF5BoI/AAAAAAAAAOE/5iwmg53FlzI/s320/05.JPG" alt="" id="BLOGGER_PHOTO_ID_5117137488845538946" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Теперь при работе приложения в нижнем левом углу будет следующая картина:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_rOh27G9-PIg/RwO6FDF5BpI/AAAAAAAAAOM/pTEXhKookIY/s1600-h/06.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_rOh27G9-PIg/RwO6FDF5BpI/AAAAAAAAAOM/pTEXhKookIY/s320/06.JPG" alt="" id="BLOGGER_PHOTO_ID_5117138197515142802" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Практика. Включение Keyword Substitution&lt;/b&gt;&lt;br /&gt;Основная часть работы уже сделана. осталась малость - включить функцию "Keyword Substitution" для файла, в котором располагается описание нашего приложения. Допустим, файл нашего приложения называется "apex_app.sql". Тогда включение будет выглядеть так:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;drive:\path\to\svn\repository\svn propset svn:keywords "Date Revision Author" apex_app.sql&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Вот и все. Теперь при каждом сохранении очередной версии файла apex-приложения будет вместо "$Rev $" прописываться актуальная версия файла в Subversion-репозитариии. То есть, в каждом файле приложения будет лежать строка подстановки с актуальной версией файла. &lt;br /&gt;То есть, картинка в левом нижнем углу должна быть приблизительно такой:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_rOh27G9-PIg/RwO9-TF5BqI/AAAAAAAAAOU/8Uoc0vcLtBA/s1600-h/07.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_rOh27G9-PIg/RwO9-TF5BqI/AAAAAAAAAOU/8Uoc0vcLtBA/s320/07.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5117142479597536930" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Таким же образом можно выводить и последнего автора изменений или дату последнего сохранения в репозитарии. &lt;br /&gt;&lt;br /&gt;ps: прошу прощения за столь значительную задержку в публикациях, ибо после сезона отпусков случился аврал :(, что отрицательно сказалось на количестве свободных минут.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-0876573933122504";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-04-11: http://apex-dev.blogspot.com/
google_ad_channel = "6107414183";
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1045816305977712294-4237023485865839690?l=apex-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apex-dev.blogspot.com/feeds/4237023485865839690/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1045816305977712294&amp;postID=4237023485865839690' title='Комментарии: 10'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/4237023485865839690'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/4237023485865839690'/><link rel='alternate' type='text/html' href='http://apex-dev.blogspot.com/2007/10/subversion-apex.html' title='Вывод ревизии subversion в приложениях Apex.'/><author><name>Timoshinin Evgeny</name><uri>http://www.blogger.com/profile/16019140023057398100</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_rOh27G9-PIg/RwO5bTF5BkI/AAAAAAAAANk/0yhGDfl5mXM/s72-c/01.JPG' height='72' width='72'/><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1045816305977712294.post-8716969139481457329</id><published>2007-07-23T07:49:00.000+04:00</published><updated>2007-07-24T10:18:10.405+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Изменения DBMS_SQL в Oracle 11g</title><content type='html'>Как уже говорилось &lt;a href="http://apex-dev.blogspot.com/2007/06/oracle-11g.html"&gt;ранее&lt;/a&gt;, объявлено о выходе новой версии Oracle. Соответственно, в сети появляется все больше и больше информации о нововведениях, идущих в одиннадцатой версии. Так, блуждая по сети, совершенно случайно наткнулся на новость о некоторых изменениях в спецификации пакета dbms_sql.&lt;br /&gt;&lt;span class="fullpost"&gt;В небольшой заметке &lt;a href="http://technology.amis.nl/blog/?p=2332"&gt;"Oracle 11G: describing a refcursor"&lt;/a&gt; говорится о двух новых методах пакета dbms_sql:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;to_cursor_number&lt;/b&gt;, который преобразует refcursor в "dbms_sql cursor"(тот, что возвращает dbms_sql.open_cursor)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;to_refcursor&lt;/b&gt;, который выполняет обратное преобразование, то есть, преобразует "dbms_sql cursor" в refcursor&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Таким образом, теперь можно совместно использовать пакет dbms_sql и переменные типа Ref Cursor.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-0876573933122504";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-04-11: http://apex-dev.blogspot.com/
google_ad_channel = "6107414183";
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1045816305977712294-8716969139481457329?l=apex-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apex-dev.blogspot.com/feeds/8716969139481457329/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1045816305977712294&amp;postID=8716969139481457329' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/8716969139481457329'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/8716969139481457329'/><link rel='alternate' type='text/html' href='http://apex-dev.blogspot.com/2007/07/dbmssql-oracle-11g.html' title='Изменения DBMS_SQL в Oracle 11g'/><author><name>Timoshinin Evgeny</name><uri>http://www.blogger.com/profile/16019140023057398100</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1045816305977712294.post-3844066703583254886</id><published>2007-07-11T23:49:00.000+04:00</published><updated>2007-07-12T11:00:37.867+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Релиз Oracle 11g</title><content type='html'>Свершилось! Состоялся релиз одиннадцатой версии Oracle. Соответственно, на OTN появилось много нового...&lt;span class="fullpost"&gt; Появилось много различных &lt;a href="http://www.oracle.com/technology/products/database/oracle11g/index.html"&gt;обзоров&lt;/a&gt;, среди которых стоит в первую очередь обратить внимание на:&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.oracle.com/technology/products/database/oracle11g/pdf/database-11g-new-features-whitepaper.pdf"&gt;Oracle Database 11g New Features Overview&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.oracle.com/technology/products/database/oracle11g/pdf/application-development-11g-whitepaper.pdf"&gt;Oracle Database 11g Application Development&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;О многих нововведениях уже было рассказано &lt;a href="http://apex-dev.blogspot.com/2007/06/oracle-11g.html"&gt;ранее&lt;/a&gt;, так что читаем, пробуем...&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-0876573933122504";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-04-11: http://apex-dev.blogspot.com/
google_ad_channel = "6107414183";
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1045816305977712294-3844066703583254886?l=apex-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apex-dev.blogspot.com/feeds/3844066703583254886/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1045816305977712294&amp;postID=3844066703583254886' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/3844066703583254886'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/3844066703583254886'/><link rel='alternate' type='text/html' href='http://apex-dev.blogspot.com/2007/07/oracle-11g.html' title='Релиз Oracle 11g'/><author><name>Timoshinin Evgeny</name><uri>http://www.blogger.com/profile/16019140023057398100</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1045816305977712294.post-7121795697254306532</id><published>2007-06-29T23:04:00.000+04:00</published><updated>2007-07-01T11:35:22.790+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='apex'/><title type='text'>Релиз Apex 3.0.1</title><content type='html'>Cегодня состоялся релиз &lt;a href="http://www.oracle.com/technology/products/database/application_express/index.html"&gt;Oracle Application Express&lt;/a&gt; 3.0.1! Это первая заплатка к Apex 3.0., в которой  представлены следующие основные изменения:&lt;span class="fullpost"&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Возможность прямой установки в Oracle Database XE (версия 3.0 такой возможности не предоставляла)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Поддержка миграции из Oracle Database XE в Oracle Standart/Enterprise Edition 10.2.0.3&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Поддержка интеграции с Oracle SQL Developer 1.2&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Включена поддержка конфигурации Apache FOP для использования в качестве сервера отчетов для печати PDF&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Различные улучшения в стабильности и безопасности&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Ознакомиться с процессом установки заплатки и ошибками, которые она исправляет, можно в &lt;a href="http://www.oracle.com/technology/products/database/application_express/html/3.0.1_readme.html"&gt;"patch set notes"&lt;/a&gt;. Кроме того, о различиях между версиями APEX 2.1 and 3.0.1, а так же об обновлении с 2.1 на 3.0.1 можно узнать из статьи &lt;a href="http://www.oracle.com/technology/products/database/application_express/html/3.0.1_and_xe.html"&gt;"Oracle Database XE and Application Express 3.0.1"&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Скачать заплатку можно &lt;a href="http://www.oracle.com/technology/products/database/application_express/download.html"&gt;отсюда&lt;/a&gt;.&lt;br /&gt;ps: судя по &lt;a href="http://forums.oracle.com/forums/thread.jspa?threadID=526025&amp;tstart=0"&gt;сообщениям&lt;/a&gt; форума, установка новой заплатки уже идет полным ходом и весьма небезуспешно.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-0876573933122504";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-04-11: http://apex-dev.blogspot.com/
google_ad_channel = "6107414183";
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1045816305977712294-7121795697254306532?l=apex-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apex-dev.blogspot.com/feeds/7121795697254306532/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1045816305977712294&amp;postID=7121795697254306532' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/7121795697254306532'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/7121795697254306532'/><link rel='alternate' type='text/html' href='http://apex-dev.blogspot.com/2007/06/apex-301.html' title='Релиз Apex 3.0.1'/><author><name>Timoshinin Evgeny</name><uri>http://www.blogger.com/profile/16019140023057398100</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1045816305977712294.post-8306714474939896429</id><published>2007-06-25T23:40:00.000+04:00</published><updated>2007-06-30T11:39:52.427+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Oracle выпускает плагин для Eclipse</title><content type='html'>Совсем недавно Oracle присоединилась к Eclipse Foundation... и вот результат - выпущен &lt;a href="http://www.oracle.com/technology/tech/eclipse/dtp/index.html"&gt;Oracle Database Plugin&lt;/a&gt;, расширяющий возможности Eclipse Data Tools Platform (DTP).&lt;br /&gt;&lt;span class="fullpost"&gt; Плагин предоставляет следующие возможности:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;соединение с БД Oracle версий 9iR2 и выше&lt;/li&gt;&lt;br /&gt;&lt;li&gt;просмотр объектов БД и навигация по ним&lt;/li&gt;&lt;br /&gt;&lt;li&gt;выполнение хранимых процедур и функций&lt;/li&gt;&lt;br /&gt;&lt;li&gt;графическое и текстовое представление планов выполнения&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Инсталляция плагина очень проста (как и любого другого плагина для Eclipse). Необходимо либо прописать "http://download.eclipse.org/datatools/updates" в меню "Help-&gt;Software Updates-&gt;Find", либо скачать &lt;a href="http://www.oracle.com/technology/tech/eclipse/dtp/downloads.html"&gt;архив&lt;/a&gt; с плагином и распаковать его в директорию Eclipse. Работать с новым плагином можно будет после перезагрузки.&lt;br /&gt;&lt;br /&gt;Информацию об установке и основных функциях можно получить на &lt;a href="http://www.oracle.com/technology/tech/eclipse/dtp/files/gettingstarted.html"&gt;OTN&lt;/a&gt;. Кроме того, на OTN появилась соответствующая &lt;a href="http://forums.oracle.com/forums/forum.jspa?forumID=393"&gt;ветка форума&lt;/a&gt;, где, правда, пока мало информации, но, думаю, в перспективе, это будет первоисточник путей решений проблем с новым плагином.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-0876573933122504";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-04-11: http://apex-dev.blogspot.com/
google_ad_channel = "6107414183";
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1045816305977712294-8306714474939896429?l=apex-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apex-dev.blogspot.com/feeds/8306714474939896429/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1045816305977712294&amp;postID=8306714474939896429' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/8306714474939896429'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/8306714474939896429'/><link rel='alternate' type='text/html' href='http://apex-dev.blogspot.com/2007/06/oracle-eclipse.html' title='Oracle выпускает плагин для Eclipse'/><author><name>Timoshinin Evgeny</name><uri>http://www.blogger.com/profile/16019140023057398100</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1045816305977712294.post-1614283494871297555</id><published>2007-06-20T23:10:00.000+04:00</published><updated>2007-06-27T12:58:26.696+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Oracle 11g гредет....</title><content type='html'>Oracle &lt;a href="http://www.oracle.com/webapps/events/EventsDetail.jsp?p_eventId=66665"&gt; официально объявила &lt;/a&gt;о дате выпуска очередной версии СУБД - Oracle 11g. Это событие запланировано на 11 июля 2007 года и пройдет оно в Нью-Йорке. На конференции OpenWorld (в октябре прошлого года) представители Oracle пролили немного света на изменения, которые войдут в 11ый релиз. Как всегда, обещаются улучшения производительности, масштабируемости и т.д. Кроме того, была обещана новая технология компрессии данных, которая позволит значительно сократить размер БД, и механизм хранения неструктурированных данных... Но что же нас ждет на самом деле?&lt;span class="fullpost"&gt; Узнать более подробную информацию о нововведениях можно узнать как минимум в двух местах:&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.dba-oracle.com/oracle11g/oracle_11g_new_features.htm"&gt;dba-oracle.com&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.tusc.com/tusc/nonhtml/collaborate2007-11g_features.zip"&gt;Презентация на tusc.com&lt;/a&gt; (за ссылку спасибо &lt;a href="http://dsvolk.blogspot.com/2007/05/11g-new-features.html"&gt;Дмитрию Волкову&lt;/a&gt;)&lt;/li&gt; &lt;/ul&gt;&lt;br /&gt;Как всегда, много всяких улучшений и новинок, наиболее интересными среди которых мне показались следующие:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Новый тип данных "simple_integer"&lt;/b&gt;. Переменные это типа всегда NOT NULL и работа с ними выполняется быстрее, чем с переменными типа  PLS_INTEGER.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Серверный пул соединений (server-side connection pooling)&lt;/b&gt;. Позволяет нескольким клиентам использовать один и тот же пул сессий(должен совпадать USERID). Клиенты могут соединяться/отсоединяться с БД без затрат на создание серверной сессии.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Кэширование результатов запроса&lt;/b&gt;. Результаты SQL-запросов кэшируются. Размер кэша устанавливает DBA. Включается функциональность для таблицы следующей командой: &lt;pre&gt; alter table _ТАБЛИЦА_ cache results &lt;/pre&gt; &lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Виртуальные колонки (Virtual columns)&lt;/b&gt;. Виртуальные колонки представляют из себя функции.Соответственно, индексы по таким колонкам являются индексами над функциями. В выражениях могут использоваться: колонки таблицы, константы, SQL-функции или функции, созданные пользователем. Поддерживается так же секционирование. Виртуальные колонки не могут использоваться в индексно-организованных (index organized) или внешних (external) таблицах. Прямая запись для таких колонок не возможна.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Ключевое слово "super" для объектно - ориентированных DDL&lt;/b&gt;. Новое ключевое слово используется в экземплярах производного типа (перегруженного) для того, чтобы сослаться на базовый класс, от которого текущий был унаследован.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Ключевое слово "continue" в циклах&lt;/b&gt;. Без комментариев... :)... давно пора.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Хранилище XML (XML data storage)&lt;/b&gt;. Начиная с 11ой версии, XML можно хранить как CLOB или бинарный тип данных.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Автоматическое секционирование&lt;/b&gt;. Автоматическое создание секций.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Порядок срабатывания тригера.&lt;/b&gt; Можно указывать порядок выполнения тригеров.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Невидимые индексы (Invisible indexes)&lt;/b&gt;. Вместо того, чтобы удалять индекс, если он более (или пока) не нужен, можно просто сделать его невидимым. В результате при выполнении SQL-запросов этот индекс использоваться не будет.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Создание и перестроение индекса в online (create and rebuild index online)&lt;/b&gt;. Создание и перестроение индекса может выполняться при выполнении DML операции над таблицей. Ранее для этого требовалась эксклюзивная блокировка. Кроме того, перестроение индекса (rebuild) быстрее, чем удаление (drop) и создание (create) индекса.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Использование последовательностей в PL/SQL&lt;/b&gt;. Ранее, для того, чтобы получить следующее значение из последовательности (sequence.nexval) необходимо было использовать явный или неявный курсор (SQL). Теперь курсор более не нужен, и следующий код будет работать: &lt;pre&gt;v_val := Sequence.nexval;&lt;/pre&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Read-only таблицы&lt;/b&gt;. К таким таблицам не применимы DML-операции, а так же select for update. Перевод в данный режим таблиц выполняется следующей командой: &lt;pre&gt; alter table _ТАБЛИЦА_ read only &lt;/pre&gt; &lt;/li&gt; &lt;/ul&gt;&lt;br /&gt;... т.д. Список, естественно, не полный. Окончательный будет известен только после официального релиза. Ждем....&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-0876573933122504";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-04-11: http://apex-dev.blogspot.com/
google_ad_channel = "6107414183";
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1045816305977712294-1614283494871297555?l=apex-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apex-dev.blogspot.com/feeds/1614283494871297555/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1045816305977712294&amp;postID=1614283494871297555' title='Комментарии: 4'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/1614283494871297555'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/1614283494871297555'/><link rel='alternate' type='text/html' href='http://apex-dev.blogspot.com/2007/06/oracle-11g.html' title='Oracle 11g гредет....'/><author><name>Timoshinin Evgeny</name><uri>http://www.blogger.com/profile/16019140023057398100</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1045816305977712294.post-2787506678595643779</id><published>2007-06-15T23:38:00.000+04:00</published><updated>2007-06-21T11:29:03.566+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='howto'/><category scheme='http://www.blogger.com/atom/ns#' term='apex'/><category scheme='http://www.blogger.com/atom/ns#' term='report'/><title type='text'>Apex. Фиксируем габариты отчета.</title><content type='html'>Читая один из англоязычных блогов по Oracle Application Express, наткнулся на одну интересную &lt;a href="http://atulley.wordpress.com/2007/06/14/apex-using-scrollbars-in-a-region/"&gt;хитрость&lt;/a&gt;.&lt;br /&gt;Суть проблемы заключается в том, что для отчетов с большим количеством записей есть только 2 пути для отображения: &lt;ul&gt;&lt;br /&gt;&lt;li&gt;либо настраивать постраничный вывод (pagination)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;либо показывать все записи и позволять пользователю скроллировать страничку&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Автор предлагает третий вариант (своего рода, усовершенствование второго подхода) - зафиксировать габариты отчета и показывать все строки. &lt;span class="fullpost"&gt;&lt;br /&gt;Фиксация габаритов очень проста - необходимо в настройках отчета прописать лишь:&lt;ul&gt;&lt;br /&gt;&lt;li&gt;в "Region Header": &lt;code&gt; &lt; div style="overflow: auto; height: 450px;"&gt; &lt;/code&gt;, где вместо "450px" можно писать любую желаемую высоту отчета в пикселях.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;в "Region footer":&lt;code&gt; &lt; /div &gt; &lt;/code&gt; &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;А именно, необходимо найти описание отчета:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_rOh27G9-PIg/RnohK2mtMiI/AAAAAAAAAMU/o3lovy8zsXw/s1600-h/01.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_rOh27G9-PIg/RnohK2mtMiI/AAAAAAAAAMU/o3lovy8zsXw/s320/01.JPG" alt="" id="BLOGGER_PHOTO_ID_5078408000153924130" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;И прописать в соответствующие поля необходимые значения:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_rOh27G9-PIg/RnohK2mtMjI/AAAAAAAAAMc/xtYTW2W2mOM/s1600-h/02.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_rOh27G9-PIg/RnohK2mtMjI/AAAAAAAAAMc/xtYTW2W2mOM/s320/02.JPG" alt="" id="BLOGGER_PHOTO_ID_5078408000153924146" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Результат, как всегда, можно посмотреть на &lt;a href="http://apex.oracle.com/pls/otn/f?p=38134"&gt;apex.oracle.com&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-0876573933122504";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-04-11: http://apex-dev.blogspot.com/
google_ad_channel = "6107414183";
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1045816305977712294-2787506678595643779?l=apex-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apex-dev.blogspot.com/feeds/2787506678595643779/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1045816305977712294&amp;postID=2787506678595643779' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/2787506678595643779'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/2787506678595643779'/><link rel='alternate' type='text/html' href='http://apex-dev.blogspot.com/2007/06/apex.html' title='Apex. Фиксируем габариты отчета.'/><author><name>Timoshinin Evgeny</name><uri>http://www.blogger.com/profile/16019140023057398100</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_rOh27G9-PIg/RnohK2mtMiI/AAAAAAAAAMU/o3lovy8zsXw/s72-c/01.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1045816305977712294.post-2548773222496578105</id><published>2007-06-10T11:37:00.000+04:00</published><updated>2007-06-11T13:15:19.958+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sqldeveloper'/><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='apex'/><title type='text'>Oracle SQL Developer 1.2</title><content type='html'>Вышла новая версия &lt;a href="http://www.oracle.com/technology/products/database/sql_developer/index.html"&gt;Oracle SQL Developer&lt;/a&gt;. Данная IDE  становится все более привлекательной для разработчиков Oracle APEX в силу появления новых фич (анонсировалось в &lt;a href="http://apex-dev.blogspot.com/2007/05/apex-sql-developer.html"&gt;"Отчеты по Apex в SQL Developer"&lt;/a&gt; и &lt;a href="http://apex-dev.blogspot.com/2007/06/apex-sqldeveloper.html"&gt;"Apex и SQLDeveloper - интеграция продолжается"&lt;/a&gt;).&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;Со списком новых функциональностей можно ознакомиться на сайте OTN - &lt;a href="http://www.oracle.com/technology/products/database/sql_developer/files/relnotes_v12.html"&gt;"Release Notes 1.2"&lt;/a&gt;. Основными из них являются:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;поддержка Oracle Application Express (некоторые отчеты, импорт / экспорт приложений)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;поддержка миграции из сторонних баз данных в Oracle. Поддерживаются:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Microsoft Access: 97, 2000, 2002/XP, 2003&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Microsoft SQL Server: 7, 2000, 2005&lt;/li&gt;&lt;br /&gt;&lt;li&gt;MySQL: 3, 4, 5&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-0876573933122504";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-04-11: http://apex-dev.blogspot.com/
google_ad_channel = "6107414183";
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1045816305977712294-2548773222496578105?l=apex-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apex-dev.blogspot.com/feeds/2548773222496578105/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1045816305977712294&amp;postID=2548773222496578105' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/2548773222496578105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/2548773222496578105'/><link rel='alternate' type='text/html' href='http://apex-dev.blogspot.com/2007/06/oracle-sql-developer-12.html' title='Oracle SQL Developer 1.2'/><author><name>Timoshinin Evgeny</name><uri>http://www.blogger.com/profile/16019140023057398100</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1045816305977712294.post-1072044974837507024</id><published>2007-06-05T23:56:00.000+04:00</published><updated>2007-06-06T12:44:43.413+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sqldeveloper'/><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='apex'/><title type='text'>Apex и SQLDeveloper - интеграция продолжается</title><content type='html'>Как уже упоминалось &lt;a href="http://apex-dev.blogspot.com/2007/05/apex-sql-developer.html"&gt;ранее&lt;/a&gt;, в последней версии Oracle SQLDeveloper появилась некоторая совместимость с Oracle Application Express. Как оказалось, это не последний шаг в интеграции!&lt;br /&gt;&lt;span class="fullpost"&gt;На своем блоге, &lt;a href="http://krisrice.blogspot.com/"&gt;Крис Райс&lt;/a&gt; (принимает участие в разработке Oracle SQLDeveloper), &lt;a href="http://krisrice.blogspot.com/2007/06/more-apexsqldev.html"&gt;озвучил &lt;/a&gt;несколько новшеств в грядущем обновлении. Они касаются экспорта/импорта приложений Apex. Ранее аналогичные манипуляции можно было выполнять только из самого Apex. Так же, Крис приводите несколько снимков, описывающих новшества:&lt;br /&gt;&lt;br /&gt;Экспорт приложения:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_rOh27G9-PIg/RmZyt2mtMfI/AAAAAAAAAL8/LNUVoTklCxs/s1600-h/01.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_rOh27G9-PIg/RmZyt2mtMfI/AAAAAAAAAL8/LNUVoTklCxs/s320/01.png" alt="export apex application" id="BLOGGER_PHOTO_ID_5072868162356982258" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Импорт приложения:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_rOh27G9-PIg/RmZyt2mtMgI/AAAAAAAAAME/stWfVlGP240/s1600-h/02.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_rOh27G9-PIg/RmZyt2mtMgI/AAAAAAAAAME/stWfVlGP240/s320/02.png" alt="import apex application" id="BLOGGER_PHOTO_ID_5072868162356982274" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Настройки импорта:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_rOh27G9-PIg/RmZyuGmtMhI/AAAAAAAAAMM/3s4NEz4JOSI/s1600-h/03.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_rOh27G9-PIg/RmZyuGmtMhI/AAAAAAAAAMM/3s4NEz4JOSI/s320/03.png" alt="apex application import option" id="BLOGGER_PHOTO_ID_5072868166651949586" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-0876573933122504";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-04-11: http://apex-dev.blogspot.com/
google_ad_channel = "6107414183";
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1045816305977712294-1072044974837507024?l=apex-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apex-dev.blogspot.com/feeds/1072044974837507024/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1045816305977712294&amp;postID=1072044974837507024' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/1072044974837507024'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/1072044974837507024'/><link rel='alternate' type='text/html' href='http://apex-dev.blogspot.com/2007/06/apex-sqldeveloper.html' title='Apex и SQLDeveloper - интеграция продолжается'/><author><name>Timoshinin Evgeny</name><uri>http://www.blogger.com/profile/16019140023057398100</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_rOh27G9-PIg/RmZyt2mtMfI/AAAAAAAAAL8/LNUVoTklCxs/s72-c/01.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1045816305977712294.post-5063209892886433901</id><published>2007-06-03T23:16:00.000+04:00</published><updated>2007-06-21T10:36:34.891+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='deploy'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='apex'/><title type='text'>Развертывание приложений Apex : часть 2 (Import)</title><content type='html'>Продолжаем рассказ о развертывании приложений Oracle Application Express, начатый в заметке &lt;a href="http://apex-dev.blogspot.com/2007/05/apex-1-export.html"&gt;"Развертывание приложений Apex : часть 1 (Export)"&lt;/a&gt;. После того, как приложение было экспортировано из Apex-репозитария на одном сервере, его необходимо проимпортировать в репозитарий другого сервера...&lt;br /&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;Импорт выполняется через "Application Builder"-&gt;"Import"-&gt;"Application", где необходимо указать путь к файлу, в котором находится описание импортируемого приложения, тип информации в файле и кодировку:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_rOh27G9-PIg/Rln6ATc0_-I/AAAAAAAAALU/MeAGRVZ-TzQ/s1600-h/04.new.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_rOh27G9-PIg/Rln6ATc0_-I/AAAAAAAAALU/MeAGRVZ-TzQ/s320/04.new.jpg" alt="start to import apex application" id="BLOGGER_PHOTO_ID_5069357738710335458" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Признаком успешного импорта файла в репозитарий является следующее сообщение:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_rOh27G9-PIg/Rln6ATc0__I/AAAAAAAAALc/DJcfhUPCuKI/s1600-h/05.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_rOh27G9-PIg/Rln6ATc0__I/AAAAAAAAALc/DJcfhUPCuKI/s320/05.jpg" alt="success apex application import" id="BLOGGER_PHOTO_ID_5069357738710335474" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Последним экраном импорта является описание установок развертывания приложения:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_rOh27G9-PIg/Rln6Ajc1AAI/AAAAAAAAALk/s4K6I6bgkKA/s1600-h/06.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_rOh27G9-PIg/Rln6Ajc1AAI/AAAAAAAAALk/s4K6I6bgkKA/s320/06.jpg" alt="apex application deploy" id="BLOGGER_PHOTO_ID_5069357743005302786" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;,где:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Current Workspace - Название текущей рабочей области&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Export File Workspace - Название рабочей области импортируемого файла экспорта&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Export File Workspace ID - Идентификатор рабочей области импортируемого файла экспорта&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Export File Application ID - Идентификатор приложения в импортируемом файле экспорта&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Export File Version - Версия файла экспорта&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Export File Parse As Schema - В рамках какой Oracle схемы выполнялся экспорт файла&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Application Origin - Происхождение приложения&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Parse As Schema - В рамках какой Oracle схемы будет выполнять разбор файла экспорта&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Build Status - Статус приложения после импорта. "Run Application Only" - с приложением можно только запускать на выполнение. "Run and Build Application" - приложение можно как выполнять, так и изменять&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Install As Application - Идентификатор для нового приложения. "Auto Assign New Application ID" - автоматическое присвоение нового значения для ID приложения. "Reuse  Application ID ... From Export File" - использование того ID приложения, который был у него во время экспорта. "Change Application ID" - изменить ID приложения вручную.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Все загруженные файлы хранятся в отдельном репозитарии, посмотреть который можно в "Application Builder" -&gt; "Export Repository". То есть, даже если после развертывания приложение было удалено по каким - то причинам, его можно по-новой развернуть на сервере без повторного испортирта файл.&lt;br /&gt;Кроме возможности развертывания приложения, в репозитарии есть функция удаления файлов импорта. И если уж сам файл удален из репозитария, то для импорта приложения необходимо будет снова выполнить импорт файла на сервер.&lt;br /&gt;&lt;br /&gt;Если вдруг, во время установки приложения появилось сообщение:&lt;br /&gt;&lt;pre style="color: rgb(255, 0, 0);"&gt;&lt;b&gt;&lt;br /&gt;This page was exported from a different application or from an application in different workspace.&lt;br /&gt;Page cannot be installed in this application.&lt;/b&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;то необходимо проверить, что ID рабочей области (Workspace ID), откуда экспортировалось приложение, отличается от ID рабочей области, куда приложение устанавливается. В этом случае, надо просто изменить его в файле экспорта на значение Workspace ID, куда устанавливается приложение. Для этого, необходимо найти в начале файла экспорта следующую строку:&lt;br /&gt;&lt;pre&gt;wwv_flow_api.set_security_group_id(p_security_group_id=&gt; _Число_);&lt;/pre&gt;&lt;br /&gt;И заменить "_число_" на значение "Workspace ID", куда устанавливается приложение. Если вы его по каким-либо причинам его не знаете, то просто экспортируйте что-нибудь из этой рабочей области и в начале файла экспорта, в той же строке, будет нужный идентификатор. То есть, приложения должны переноситься между серверами только в рамках одной и той же рабочей области.&lt;br /&gt;&lt;br /&gt;В заключении надо сказать, что Oracle Application Express позволяет экспортировать/импортировать не только приложение, но и отдельные его части: страницы , темы оформления, значения по умолчанию, CSS и т.д. В случае экспорта страницы из приложения, необходимо учитывать так же, что на новом сервере должны совпадать не только ID рабочей области, но ID приложения (документация на &lt;a href="http://download-uk.oracle.com/docs/cd/B32472_01/doc/appdev.300/b32471/deploy.htm#BIHJBCEC"&gt;OTN&lt;/a&gt;).&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-0876573933122504";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-04-11: http://apex-dev.blogspot.com/
google_ad_channel = "6107414183";
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1045816305977712294-5063209892886433901?l=apex-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apex-dev.blogspot.com/feeds/5063209892886433901/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1045816305977712294&amp;postID=5063209892886433901' title='Комментарии: 4'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/5063209892886433901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/5063209892886433901'/><link rel='alternate' type='text/html' href='http://apex-dev.blogspot.com/2007/06/apex-2-import.html' title='Развертывание приложений Apex : часть 2 (Import)'/><author><name>Timoshinin Evgeny</name><uri>http://www.blogger.com/profile/16019140023057398100</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_rOh27G9-PIg/Rln6ATc0_-I/AAAAAAAAALU/MeAGRVZ-TzQ/s72-c/04.new.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1045816305977712294.post-8054437926060054115</id><published>2007-05-30T00:19:00.000+04:00</published><updated>2007-06-17T16:47:46.863+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='deploy'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='apex'/><title type='text'>Развертывание приложений Apex : часть 1 (Export)</title><content type='html'>Как правило, процесс разработки ПО идет по следующему сценарию: Разработка (development) -&gt; Тестирование (testing) -&gt; Заказчик (deploy). То есть, в начале разрабатывается приложение в соответствии с заявленными требованиями, потом выполняется проверка на соответствие этим требованиям и заключительным этапом является развертывание приложения на стороне заказчика. При этом, на втором и третьем этапе необходимо развернуть приложение на новой площадке (для чистоты эксперимента). В Oracle Application Express этот процесс максимально автоматизирован &lt;span class="fullpost"&gt; (чему, в основном, способствует именно &lt;a href="http://apex-dev.blogspot.com/2007/03/application-express.html"&gt;архитектура Apex&lt;/a&gt; - когда, вся информация о приложении хранится в БД).&lt;br /&gt;&lt;br /&gt;Суть процесса хорошо описана в &lt;a href="http://download-uk.oracle.com/docs/cd/B32472_01/doc/appdev.300/b32471/deploy.htm#BABGJIAD"&gt;документации&lt;/a&gt; и заключатеся в том, что Apex позволяет экспортировать всю необходимую информацию о приложении в файл и, соответственно, есть возможность импорта этого файла. Сам файл представляется из себя простой текст с DML операциями.&lt;br /&gt;&lt;br /&gt;Для того, чтобы экспортировать приложение, необходимо перейти в приложение и выбрать "Export/Import"-&gt;"Export"-&gt;"Application":&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_rOh27G9-PIg/Rlnw8zc0_8I/AAAAAAAAALE/Vw0_ZTznpos/s1600-h/01.new.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_rOh27G9-PIg/Rlnw8zc0_8I/AAAAAAAAALE/Vw0_ZTznpos/s320/01.new.jpg" alt="start to export apex application" id="BLOGGER_PHOTO_ID_5069347782976143298" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;После чего, появится диалог экспорта приложения:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_rOh27G9-PIg/Rlnw9Dc0_9I/AAAAAAAAALM/jLyFl3cqqEs/s1600-h/02.new.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_rOh27G9-PIg/Rlnw9Dc0_9I/AAAAAAAAALM/jLyFl3cqqEs/s320/02.new.jpg" alt="set apex application export settings" id="BLOGGER_PHOTO_ID_5069347787271110610" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Где:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Application - идентификатор и название экспортируемого приложения&lt;/li&gt;&lt;br /&gt;&lt;li&gt;File Format - тип форматирования строк в файле: DOS/UNIX style &lt;/li&gt;&lt;br /&gt;&lt;li&gt;Owner Override - пользователь, для которого будет в дальнешем импортировано приложение. Если не указано, то текущий &lt;/li&gt;&lt;br /&gt;&lt;li&gt;Build Status Override - статус приложения после дальнейшего импорта. "Run Application Only" - приложение можно только запускать на выполнение. "Run and Build Application" - приложение можно как выполнять, так и дорабатывать&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Debugging - возможность использования встроенной отладки после дальнейшего импорта приложения&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Export Supporting Object Definitions - необходимость включаения в файл экспорта определения объектов БД, которые используются в приложении&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Export Comments - необходимость экспорта комментариев&lt;/li&gt;&lt;br /&gt;&lt;li&gt;As of - экспорт приложения по состоянию на указанное количество минут назад (используется функциональность пакета DBMS_FLASHBACK)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;File Character Set - кодировка, в которой выполняется экспорт &lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;Результатом будет sql-файл, который можно проимпортировать на другой площадке.&lt;br /&gt;О том, как выполнять импорт файла приложения и о возможных "непонятках", которые могут возникнуть в процессе импорта, будет рассказано в одной из следующих заметок...&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-0876573933122504";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-04-11: http://apex-dev.blogspot.com/
google_ad_channel = "6107414183";
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1045816305977712294-8054437926060054115?l=apex-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apex-dev.blogspot.com/feeds/8054437926060054115/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1045816305977712294&amp;postID=8054437926060054115' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/8054437926060054115'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/8054437926060054115'/><link rel='alternate' type='text/html' href='http://apex-dev.blogspot.com/2007/05/apex-1-export.html' title='Развертывание приложений Apex : часть 1 (Export)'/><author><name>Timoshinin Evgeny</name><uri>http://www.blogger.com/profile/16019140023057398100</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_rOh27G9-PIg/Rlnw8zc0_8I/AAAAAAAAALE/Vw0_ZTznpos/s72-c/01.new.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1045816305977712294.post-6965625835045936869</id><published>2007-05-26T00:56:00.000+04:00</published><updated>2007-06-07T11:35:29.797+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='apex'/><category scheme='http://www.blogger.com/atom/ns#' term='translation'/><title type='text'>Повышаем производительность (часть 3)</title><content type='html'>Заканчиваем перевод статьи &lt;a href="http://www.oracle.com/technology/oramag/oracle/07-jan/o17browser.html?msgid=5276023"&gt;Sizing Up Performance&lt;/a&gt;, начатый в постах &lt;a href="http://apex-dev.blogspot.com/2007/05/1.html"&gt;"Повышаем производительность (часть 1)"&lt;/a&gt; и &lt;a href="http://apex-dev.blogspot.com/2007/05/2.html"&gt;"Повышаем производительность (часть 2)"&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;b&gt;Оптимизация элементов страниц&lt;/b&gt;&lt;br /&gt;Другими общедоступными возможностями настройки производительности приложений Oracle Appliccation Express являются такие элементы, как процессы(Page processes), вычисления(computations),авторизация(authorizations), валидация(validations) и условия (conditions). Производительность этих элементов на странице должна быть очевидной при работе приложения в режиме отладки (debug mode). Ниже приведены рекомендации для этих элементов страницы:&lt;br /&gt;&lt;br /&gt;Устанавливайте момент запуска процесса на уровне страницы (page processes) - один на страницу (per-page), а не на сессию. Если же используется процесс на уровне приложения (application-level processes) , то можно установить момент запуска - один на сессию (per session) или на показ страницы (page view). Имейте в виду, что использование опции по сессионного старта процесса уровня приложения, может повлиять на отображение всех страниц приложения.&lt;br /&gt;&lt;br /&gt;Оптимизируйте составляющие нулевой страницы (особенности этой страницы описаны &lt;a href="http://apex-dev.blogspot.com/2007/03/apex-page-0.html"&gt;здесь&lt;/a&gt;). Компоненты этой страницы отображаются на каждой странице приложения, поэтому стоит уделить особое внимание оптимизации логики именно этой страницы. Объединяйте различные PL/SQL блоки в пакеты, то есть, если на странице есть большие PL/SQL блоки, то лучше перенести эти блоки в PL/SQL пакет и вызывать его из приложения.&lt;br /&gt;&lt;br /&gt;Используйте декларативные условия. Такия условия быстрее, чем динамический SQL или PL/SQL-условия. Например, использование условие типа "Item=Value" будет быстрее, чем использование PL/SQL-выражения ":ITEM=value."&lt;br /&gt;&lt;br /&gt;Для отчетов, содержащих большое количество строк, лучше использовать нумерацию страниц типа "Rows X to Y". Нумерация типа "Rows X to Y of Z" занимает больше времени на выполнение, чем простая нумерация типа "Rows X to Y". Например, если в отчете, содержащем 900 строк, используется нумерация типа "Rows X to Y of Z", Oracle Application Express будет должен выполнить полную выборку данных, чтобы установить количество строк. А при использовании нумерации типа "Rows X to Y", будет необходимо выбрать только Y + 1 строку.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Выводы&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Использование представленного материала, поможет оценить производительность и масштабируемость приложений Oracle Application Express. Если производительность приложения оставляет желать лучшего, то использование выше представленных подсказок поможет установить самые медленные страницы и определить на них плохо реализованные компоненты. Используя данную информацию, можно будет гарантировать, что ваши приложения Oracle Application Express будут соответствовать заявленным требованиям по производительности.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-0876573933122504";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-04-11: http://apex-dev.blogspot.com/
google_ad_channel = "6107414183";
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1045816305977712294-6965625835045936869?l=apex-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apex-dev.blogspot.com/feeds/6965625835045936869/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1045816305977712294&amp;postID=6965625835045936869' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/6965625835045936869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/6965625835045936869'/><link rel='alternate' type='text/html' href='http://apex-dev.blogspot.com/2007/05/3.html' title='Повышаем производительность (часть 3)'/><author><name>Timoshinin Evgeny</name><uri>http://www.blogger.com/profile/16019140023057398100</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1045816305977712294.post-1619776076852062247</id><published>2007-05-23T23:45:00.000+04:00</published><updated>2007-06-06T11:52:13.350+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='apex'/><category scheme='http://www.blogger.com/atom/ns#' term='translation'/><title type='text'>Повышаем производительность (часть 2)</title><content type='html'>Продолжаем перевод статьи &lt;a href="http://www.oracle.com/technology/oramag/oracle/07-jan/o17browser.html?msgid=5276023"&gt;Sizing Up Performance&lt;/a&gt; о проблемах производительности в приложениях Oracle Application Express, начатый в предыдущем &lt;a href="http://apex-dev.blogspot.com/2007/05/1.html"&gt;посте&lt;/a&gt;.&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;b&gt;Поиск и устранение узких мест&lt;/b&gt;&lt;br /&gt;Накладные расходы, связанные с созданием страницы в Apex, довольно статичны. Время потраченное на обработку SQL или PL/SQL кода, созданного разработчком, добавляется к тому, которое было использовано для генерации страницы. Используя "Monitor Activity", можно легко определить наихудшие по производительности страницы приложений:&lt;br /&gt;&lt;br /&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_rOh27G9-PIg/RmHNdDc1ABI/AAAAAAAAALs/zYUdB_Bu4H0/s320/MonAct.gif" alt="Monitor Activity feature of Oracle Application Express" id="BLOGGER_PHOTO_ID_5071560554422009874" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;После того, как определена самая медленная страница приложения, можно изучить ее в режиме отладки, нажав ссылку "Debug" в панели инструментов разработчика.&lt;br /&gt;&lt;br /&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center;" src="http://bp0.blogger.com/_rOh27G9-PIg/RmHYiDc1ACI/AAAAAAAAAL0/6ZqVEhrgyEk/s320/02.jpg" alt="Debug link in the Oracle Application Express Developer Toolbar" id="BLOGGER_PHOTO_ID_5071572734949261346" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;В режиме отладки, отдновременно с выводом самой страницы, выводится и информация о затраченном на вывод времени: отражаются временные интервалы, соответствующие конкретным действиям Oracle Application Express, а так же такая дополнительная информация, как названия элементов страницы, вычисления, точки обработки.&lt;br /&gt;&lt;br /&gt;Найти узкое место по производительности на странице довольно просто, для этого достаточно лишь опредедлить скачек потраченного времени в отладочных сообщениях. Например, ниже следует кусок отладочных сообщений:&lt;br /&gt;&lt;pre&gt;.&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;0.05: Region: Projects&lt;br /&gt;0.06: Show report&lt;br /&gt;0.06: Determine column headings&lt;br /&gt;0.06: Activate sort&lt;br /&gt;0.07: Parse query as: MIKE1&lt;br /&gt;0.07: Binding: ":P24_SEARCH"="P24_SEARCH" value=""&lt;br /&gt;0.07: Print column headings&lt;br /&gt;0.07: Rows loop: 15 row(s)&lt;br /&gt;0.18: Region: Icon View&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Очевиден скачек потраченного времени с 0.07 секунд до 0.18. Этот скачок свидетельствует о том, что запрос занимает 0.11 секунд на выполнение, которое в данном примере имеет значительную долю в общем времени вывода страницы и, таким образом, является отличной целью для оптимизации.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Настройка SQL&lt;/b&gt;&lt;br /&gt;Наиболее распространенной областью настройки является SQL. Движок Oracle Application Express выполняет разбор, связывание, непосредственное выполнение и получение результирующих данных SQL-запросов отчетов. Использование связанных переменных (bind variables) везде, где это возможно, избавляет от ненужного разбора и способствует повторному использованию планов SQL-запросов.&lt;br /&gt;&lt;br /&gt;Кроме того, необходимо убедиться, что для запроса используется оптимальный план. Для генерации плана запроса можно использовать "Explain Plan" в окне "SQL Commands".&lt;br /&gt;&lt;br /&gt;Для более тщательного изучения каждого фрагмента SQL или PL/SQL кода на каждой странице, можно включить для нее SQL-трассировку. SQL-трассировка сгенерирует трейс файл на серевере, который можно будет проанализировать Oracle утилитой - TKPROF. (более подробную информацию об использовании TKPROF в Oracle Application Express можно найти в разделе &lt;a href="http://download-west.oracle.com/docs/cd/B32472_01/doc/appdev.300/b32471/debug.htm#BCGCIBJA"&gt;Debugging an Application&lt;/a&gt; в "Oracle Application Express User's Guide")&lt;br /&gt;(прим. автора - подробнее о связываемых переменных, планах выполнения, жестком/мягком разборе запросов и трассировке можно почитать в книге Т.Кайта "Oracle для проффесионалов").&lt;br /&gt;&lt;br /&gt;... продолжение следует ...&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-0876573933122504";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-04-11: http://apex-dev.blogspot.com/
google_ad_channel = "6107414183";
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1045816305977712294-1619776076852062247?l=apex-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apex-dev.blogspot.com/feeds/1619776076852062247/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1045816305977712294&amp;postID=1619776076852062247' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/1619776076852062247'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/1619776076852062247'/><link rel='alternate' type='text/html' href='http://apex-dev.blogspot.com/2007/05/2.html' title='Повышаем производительность (часть 2)'/><author><name>Timoshinin Evgeny</name><uri>http://www.blogger.com/profile/16019140023057398100</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_rOh27G9-PIg/RmHNdDc1ABI/AAAAAAAAALs/zYUdB_Bu4H0/s72-c/MonAct.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1045816305977712294.post-2934343048424178704</id><published>2007-05-19T22:25:00.000+04:00</published><updated>2007-06-03T00:19:28.394+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='apex'/><category scheme='http://www.blogger.com/atom/ns#' term='translation'/><title type='text'>Повышаем производительность (часть 1)</title><content type='html'>Листал на днях &lt;a href="http://www.oracle.com/oramag/oracle/index.html"&gt;Oracle Magazine&lt;/a&gt;, и наткнулся на давольно интересную статью &lt;a href="http://www.oracle.com/technology/oramag/oracle/07-jan/o17browser.html?msgid=5276023"&gt;про оценку прозводительности приложений Apex&lt;/a&gt;. После беглого просмотра обратился к &lt;a href="http://www.oracle.com/global/ru/oramag/index.html"&gt;русской редакции данного журнала&lt;/a&gt; и, к своему удивлению, обнаружил, что перевода ее нет :(. После недолгих раздумий решил исправить положение :)...&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;b&gt;Советы и методы для оптимальной производительности Oracle Application Express&lt;/b&gt;&lt;br /&gt;В силу того, что Oracle Application Express становится все более популярным, все больше пользователей ищут руководства по настройке производительности для Apex приложений. Ниже будет продемострирован быстрый и удобный способ для оценки и изменения производительности. Так же будет продемонстрировано, как идентифицировать и решать проблемы производительности. Ниже перечислены наиболее общие вопросы, которые будут освещены:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Какое количество оборудования, особенно сколько процессоров (CPU), будет необходимо для работы с заданной нагрузкой&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Какое количество пользователей будет поддерживать приложение&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Как локализовать узкие места в производительности&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Понимание понятия "производительность" в приложениях Oracle Application Express&lt;/b&gt;&lt;br /&gt;    Ключ к оптимальной производительности для большинства приложений Oracle Application Express заключается в том, чтобы сохранять среднее время отображения страницы относительно небольшим. Масштабирование линейно: приложение со среднем временем вывода страницы в 10 милисекунд может быть вызвано в 10 раз больше конкурирующими пользователями, чем приложение со среднем временем вывода страницы в 100 милисекунд.&lt;br /&gt;    Для беглой оценки производительности приложений Apex, можно использовать статистику собранную Apex'ом, информация о которой доступна на странице "Monitor Activity". Если предположить, что приложение хорошо оптимизировано, включая эффективный SQL и PL/SQL, то самым важным изменяемым фактором является количество процессоров (CPU).&lt;br /&gt;Например, предположим, что разрабатывается приложение, которое должно обеспечивать 1000 показов страниц в минуту. Для системы с двумя процессорами, приложение должно обеспечивать 500 показов страниц в минуту на один процессор или 8.33 показа в секунду/процессор. Для того, чтобы удовлетворить этим требованиям, необходимо, чтобы среднее время вывода страницы не превышало 120 милисекунд.&lt;br /&gt;Отношение между доступным числом процессоров и требуемым числом показов страниц в минуту, выраженное в среднем времени отклика на страницу, может быть отражено с помощью следующей формулы:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;(N*60)&lt;br /&gt;------ = A&lt;br /&gt;  P&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;, где:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;N - количество процессоров&lt;/li&gt;&lt;br /&gt;&lt;li&gt;P - количество показов страниц в минуту&lt;/li&gt;&lt;br /&gt;&lt;li&gt;A - среднее время отклика на страницу&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Используя это простое уравнение, можно выполнять оценку среднего времени отображения страницы для  обеспечения заданного числа показов страниц в минуту. Изменяя число процессоров или количество показов страниц в минуту, можно установить четкие целевые показатели для приложения.&lt;br /&gt;Кроме того, среднее время отображения страницы может помочь в предсказании влияния изменения размера пользователей, то есть, для того, чтобы определить количество пользователей, которое может обеспечивать приложение, начиная с первого определения количества запросов страниц в течение определенного периода времени.&lt;br /&gt;Например, если средняя сессия, включающая 50 показов страниц, занимает 10 минут,а приложение поддерживает отображение пяти страниц в минуту для обычной сессии, то если приложение масштабируется для обеспечения 1000 показов страниц в минуту, то приложение будет поддерживать 200 одновременных пользователей на сессию.&lt;br /&gt;    Если экстраполировать эти данные для оценки количества ежедневных пользователей, то давайте так же считать, что все пользователи находятся в одном часовом поясе и, что в среднем каждый пользователь использует две сессии в один восьмичасовой рабочий день, в результате чего имеем 100 страниц (2 * 50 страниц в сессии). Поскольку приложение масштабируется на 1000 показов страниц в минуту,то умножим число минут в восьми часах (480) на страницы в минуту (1000), чтобы определить, что приложение может обеспечивать 480000 показов страниц на каждые восемь часов, или 4800 пользователей.&lt;br /&gt;    Как правило, приложение необходимо масштабировать для самого загруженного часа, так как нагрузка может быть 100 страниц в минуту в течение дня, а может быть и 1000 просмотров страниц в минуту в час пик.&lt;br /&gt;    Другое правило состоит в том, что необходимо обеспечивать среднее время показа страницы 300 милисекунд или менее. Для высоко производительных приложений, с многими сотнями или тысячи пользователей, необходимо стремиться к среднему времени показа страницы 150 милисекунд или менее.&lt;br /&gt;&lt;br /&gt;... продолжение следует...&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-0876573933122504";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-04-11: http://apex-dev.blogspot.com/
google_ad_channel = "6107414183";
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1045816305977712294-2934343048424178704?l=apex-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apex-dev.blogspot.com/feeds/2934343048424178704/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1045816305977712294&amp;postID=2934343048424178704' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/2934343048424178704'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/2934343048424178704'/><link rel='alternate' type='text/html' href='http://apex-dev.blogspot.com/2007/05/1.html' title='Повышаем производительность (часть 1)'/><author><name>Timoshinin Evgeny</name><uri>http://www.blogger.com/profile/16019140023057398100</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1045816305977712294.post-9069455101623016345</id><published>2007-05-15T23:41:00.000+04:00</published><updated>2007-05-29T00:49:08.796+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sqldeveloper'/><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='apex'/><title type='text'>Отчеты по Apex в SQL Developer</title><content type='html'>В одной из последних версий &lt;a href="http://www.oracle.com/technology/products/database/sql_developer/index.html"&gt;SQL Developer&lt;/a&gt;  были добавлены несколько отчетов для Application Express. Таким образом, теперь есть возможность просматривать некоторую информацию об Apex приложениях прямо из IDE (хотя доступ к ней был и раньше, так как всегда были общедоступные взгляды APEX_%, но теперь не надо будет писать даже запросов :).&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://bp2.blogger.com/_HTPuwjEAZfk/RkNSJPL9IzI/AAAAAAAAACM/qU55H7Bx2Cc/s320/ishot-1.png" alt="sqldeveloper apex reports"/&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Однако, доступ к функциональности будет только с версии Apex 3.0.1, а пока будем получать:&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://bp0.blogger.com/_HTPuwjEAZfk/RkNSTvL9I1I/AAAAAAAAACc/2o3nD-ZtXNk/s320/ishot-3.png" alt="sqldeveloper message about apex version"/&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Но, по слухам, осталось ждать не долго :)... поговаривают, что уже в конце мая-начале июня должен появиться новый патч для Apex.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-0876573933122504";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-04-11: http://apex-dev.blogspot.com/
google_ad_channel = "6107414183";
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1045816305977712294-9069455101623016345?l=apex-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apex-dev.blogspot.com/feeds/9069455101623016345/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1045816305977712294&amp;postID=9069455101623016345' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/9069455101623016345'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/9069455101623016345'/><link rel='alternate' type='text/html' href='http://apex-dev.blogspot.com/2007/05/apex-sql-developer.html' title='Отчеты по Apex в SQL Developer'/><author><name>Timoshinin Evgeny</name><uri>http://www.blogger.com/profile/16019140023057398100</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_HTPuwjEAZfk/RkNSJPL9IzI/AAAAAAAAACM/qU55H7Bx2Cc/s72-c/ishot-1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1045816305977712294.post-1784686576544500245</id><published>2007-05-12T06:49:00.000+04:00</published><updated>2007-05-28T18:30:29.643+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='apex'/><title type='text'>Установка значений Apex переменных (session state) из PL/SQL кода</title><content type='html'>Как уже было продемонстрировано в ряде примеров, а так же не плохо описано в &lt;a href="http://download-uk.oracle.com/docs/cd/B32472_01/doc/appdev.300/b32471/concept.htm#BEIFIHFH"&gt;документации&lt;/a&gt;, в Oracle Application Express установка/получение значения переменнной сессии выполняется следующим образом:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;:PN_ITEM_NAME := 'item_value';    -- установка значения&lt;br /&gt;:PNN_ITEM_NAME := :PN_ITEM_NAME;  -- установка и чтение значения&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Однако в коде хранимых процедур такой подход не допустим. Как же в таком случае получить или установить значение Apex-переменной их хранимого на сервере PL/SQL кода? &lt;span class="fullpost"&gt; Все  очень просто:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;для чтения значения переменной необходимо использовать синтаксис - v('PN_ITEM_NAME')&lt;br /&gt;&lt;/li&gt;&lt;li&gt;для установки значения переменной необходимо пользоваться методом пакета APEX_UTIL:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;...&lt;br /&gt;APEX_UTIL.set_session_state(&lt;br /&gt;            p_name =&gt; ‘PN_ITEM_NAME’,&lt;br /&gt;            p_value =&gt; ‘item_value’);&lt;br /&gt;...&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Вот так вот, не смотря на подробнейшую документацию, все таки остаются темные пятна :).&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-0876573933122504";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-04-11: http://apex-dev.blogspot.com/
google_ad_channel = "6107414183";
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1045816305977712294-1784686576544500245?l=apex-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apex-dev.blogspot.com/feeds/1784686576544500245/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1045816305977712294&amp;postID=1784686576544500245' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/1784686576544500245'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/1784686576544500245'/><link rel='alternate' type='text/html' href='http://apex-dev.blogspot.com/2007/05/apex-session-state-plsql.html' title='Установка значений Apex переменных (session state) из PL/SQL кода'/><author><name>Timoshinin Evgeny</name><uri>http://www.blogger.com/profile/16019140023057398100</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1045816305977712294.post-3543713041867146283</id><published>2007-05-08T23:16:00.000+04:00</published><updated>2007-05-11T16:23:43.632+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='apex'/><title type='text'>Firefox + Firebug = Apex IDE</title><content type='html'>Если вы занимаетесь разработкой Web-приложений (в том числе и Oracle Application Express), то Вам просто необходимо знать о существовании такого расширения для Firefox'a как &lt;span style="font-weight: bold;"&gt;FireBug &lt;/span&gt;. &lt;span class="fullpost"&gt;    Это расширение из разряда "must have", так как предоставляет все основные функции, необходимые для отладки приложений (и даже больше :).&lt;br /&gt;&lt;br /&gt;Вот лишь часть функций:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;отладка JavaScript (точки останова, просмотр значения переменных, стэк и т.д. )&lt;/li&gt;&lt;br /&gt;&lt;li&gt;анализ CSS&lt;/li&gt;&lt;br /&gt;&lt;li&gt;анализ HTML&lt;/li&gt;&lt;br /&gt;&lt;li&gt;анализ DOM&lt;/li&gt;&lt;br /&gt;&lt;li&gt;монитор сетевой активности&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;и т.д. &lt;br /&gt;Скачать можно как с сайта &lt;a href="https://addons.mozilla.org/ru/firefox/addon/1843"&gt;Mozilla.org&lt;/a&gt;, так и с домашней страницы проекта - &lt;a href="http://getfirebug.com/"&gt;getfirebug.com&lt;/a&gt;, где так же можно найти описание основных функций.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-0876573933122504";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-04-11: http://apex-dev.blogspot.com/
google_ad_channel = "6107414183";
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1045816305977712294-3543713041867146283?l=apex-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apex-dev.blogspot.com/feeds/3543713041867146283/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1045816305977712294&amp;postID=3543713041867146283' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/3543713041867146283'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/3543713041867146283'/><link rel='alternate' type='text/html' href='http://apex-dev.blogspot.com/2007/05/firefox-firebug-apex-ide.html' title='Firefox + Firebug = Apex IDE'/><author><name>Timoshinin Evgeny</name><uri>http://www.blogger.com/profile/16019140023057398100</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1045816305977712294.post-8317582011804752186</id><published>2007-05-05T15:15:00.000+04:00</published><updated>2007-05-10T16:04:47.616+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='howto'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='apex'/><category scheme='http://www.blogger.com/atom/ns#' term='report'/><title type='text'>Подсветка выбранной строки в отчетах Apex.</title><content type='html'>В состав Oracle Application Express входит ряд шаблонов для отчетов, но, к сожалению, ни одни из них не предоставляет функциональности подсветки выбранной строки. Оказывается исправить эту несправедливость не так уж и сложно...&lt;span class="fullpost"&gt; Для этого достаточно лишь немного скорректировать шаблон отчета. Что такое шаблон отчета и зачем он нужен хорошо описано в &lt;a href="http://download-uk.oracle.com/docs/cd/B32472_01/doc/appdev.300/b32471/ui.htm#BABFFGGJ"&gt;документации по Apex&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Итак, заходим в репозитарий шаблонов apex приложения, расположенный в "Shared Components"-&gt;"User Interface"-&gt;"Templates":&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_rOh27G9-PIg/RkBluwAHqaI/AAAAAAAAAKE/uqBlQOkJAXo/s1600-h/1.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_rOh27G9-PIg/RkBluwAHqaI/AAAAAAAAAKE/uqBlQOkJAXo/s320/1.JPG" alt="apex application report templates" id="BLOGGER_PHOTO_ID_5062157834998229410" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Далее, создаем точную копию любого шаблона (копию делаем для того, чтобы в отчетах, которые уже используют этот шаблон не изменили своего поведения). В наше случае возьмем за основу стандартный шаблон отчета:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_rOh27G9-PIg/RkBlvAAHqbI/AAAAAAAAAKM/rcfor91F09s/s1600-h/2.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_rOh27G9-PIg/RkBlvAAHqbI/AAAAAAAAAKM/rcfor91F09s/s320/2.JPG" alt="apex report remplates" id="BLOGGER_PHOTO_ID_5062157839293196722" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Даем название для нового шаблона - "Standard (highlight row)".&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_rOh27G9-PIg/RkBlvAAHqcI/AAAAAAAAAKU/Is_lkPgebzw/s1600-h/3.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_rOh27G9-PIg/RkBlvAAHqcI/AAAAAAAAAKU/Is_lkPgebzw/s320/3.JPG" alt="apex naming for new report template" id="BLOGGER_PHOTO_ID_5062157839293196738" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Далее, переходим к редактированию нового шаблона:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_rOh27G9-PIg/RkBlvAAHqdI/AAAAAAAAAKc/5PWCDsBkV0k/s1600-h/4.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_rOh27G9-PIg/RkBlvAAHqdI/AAAAAAAAAKc/5PWCDsBkV0k/s320/4.JPG" alt="edit apex report template" id="BLOGGER_PHOTO_ID_5062157839293196754" border="0" /&gt;&lt;/a&gt;Переходим к блоку "Column Templates" шаблона, где предоставляется возможность использовать все свои знания HTML :).&lt;br /&gt;Добавляем в блоке "Column Template 1" строку " style="background-color:#CCCCCC" ", чтобы обозначит цвет фона для конкретной строки отчета. Далее, необходимо описать условия, при которых строка будет иметь указанный цвет фона. Для этого, в блоке "Column Template 1 Condition" выбираем значение "Use Based on PL/SQL Expression", а в блоке "Column Template 1 Expression" прописываем: "  '#OBJECT_TYPE#' = :P1_TYPE ". Таким образом, у строки отчета будет отличный цвет фона только в том случае, если значение в колонке OBJECT_TYPE совпадает со значением, прописанным в невидимом поле P1_TYPE (происхождение и назначение этого поля можно узнать из этого топика про &lt;a href="http://apex-dev.blogspot.com/2007/04/apex-mater-detail.html"&gt;Master-Detail&lt;/a&gt;):&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_rOh27G9-PIg/RkBlvQAHqeI/AAAAAAAAAKk/3hd61P0h35U/s1600-h/5.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_rOh27G9-PIg/RkBlvQAHqeI/AAAAAAAAAKk/3hd61P0h35U/s320/5.JPG" alt="apex report template property" id="BLOGGER_PHOTO_ID_5062157843588164066" border="0" /&gt;&lt;/a&gt;Кроме всего прочего, в блоке "Column Template 2" прописываем стандартное значение. Этот шаблон будет применяться для всех тех строк отчета, для которых не отработал первый шаблон. Далее, очищаем поле "Background color for checked row", так как цвет фона мы уже прописали в первом шаблоне, а так же в поле "Background color for current row" прописываем значение "#EEEEEE", тем самым отчет будет подсвечивать строку, над которой сейчас находится указатель мыши пользователя:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_rOh27G9-PIg/RkBl1AAHqfI/AAAAAAAAAKs/EB-JPMuUs0k/s1600-h/6.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_rOh27G9-PIg/RkBl1AAHqfI/AAAAAAAAAKs/EB-JPMuUs0k/s320/6.JPG" alt="set current row color in apex report template" id="BLOGGER_PHOTO_ID_5062157942372411890" border="0" /&gt;&lt;/a&gt;Далее, переходим к описанию отчета, для которого хотим применить новый шаблон:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_rOh27G9-PIg/RkBl1AAHqgI/AAAAAAAAAK0/AVIvv_boTBQ/s1600-h/7.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_rOh27G9-PIg/RkBl1AAHqgI/AAAAAAAAAK0/AVIvv_boTBQ/s320/7.JPG" alt="choose report to apply new teplate in apex application" id="BLOGGER_PHOTO_ID_5062157942372411906" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Переходим в блок "Layout and Pagination" в выпадающем списке "Report Template" выбираем название ранее созданного шаблона - "template: 17. Standard (highlight row)":&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_rOh27G9-PIg/RkBl1QAHqhI/AAAAAAAAAK8/L96vVnPMuI8/s1600-h/8.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_rOh27G9-PIg/RkBl1QAHqhI/AAAAAAAAAK8/L96vVnPMuI8/s320/8.JPG" alt="set new template for report in apex" id="BLOGGER_PHOTO_ID_5062157946667379218" border="0" /&gt;&lt;/a&gt;Вот и все дела... Работу описанного выше приложения можно, как всегда, посмотреть на &lt;a href="http://apex.oracle.com/pls/otn/f?p=38134"&gt;apex.oracle.com&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-0876573933122504";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-04-11: http://apex-dev.blogspot.com/
google_ad_channel = "6107414183";
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1045816305977712294-8317582011804752186?l=apex-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apex-dev.blogspot.com/feeds/8317582011804752186/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1045816305977712294&amp;postID=8317582011804752186' title='Комментарии: 6'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/8317582011804752186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/8317582011804752186'/><link rel='alternate' type='text/html' href='http://apex-dev.blogspot.com/2007/05/apex.html' title='Подсветка выбранной строки в отчетах Apex.'/><author><name>Timoshinin Evgeny</name><uri>http://www.blogger.com/profile/16019140023057398100</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_rOh27G9-PIg/RkBluwAHqaI/AAAAAAAAAKE/uqBlQOkJAXo/s72-c/1.JPG' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1045816305977712294.post-1679913665364298968</id><published>2007-05-01T10:28:00.000+04:00</published><updated>2007-05-04T17:36:59.498+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='howto'/><category scheme='http://www.blogger.com/atom/ns#' term='search'/><category scheme='http://www.blogger.com/atom/ns#' term='apex'/><category scheme='http://www.blogger.com/atom/ns#' term='report'/><title type='text'>Добавляем поиск и подсветку в отчет Oracle Application Express.</title><content type='html'>Зачастую в приложениях, работающих со значительными объемами данных, необходим такой функционал как поиск. К сожалению, Oracle Application Express не предоставляет таких встроенных средств (как, например, Oracle Forms). Поэтому его (функционал поиска) необходимо реализовывать в ручную. &lt;span class="fullpost"&gt;&lt;br /&gt;  Продолжая развивать созданное ранее &lt;a href="http://apex-dev.blogspot.com/2007/04/apex-mater-detail.html"&gt;приложение&lt;/a&gt;, добавим к нему возможность поиска и подсветки результатов. Для этого необходимо зайти в главную страницу приложения и добавить регион, в котором будут содержаться элементы интерфейса для работы с поиском:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_rOh27G9-PIg/RjrtIgAHqAI/AAAAAAAAAG0/86EFEUz-YTE/s1600-h/2.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_rOh27G9-PIg/RjrtIgAHqAI/AAAAAAAAAG0/86EFEUz-YTE/s320/2.JPG" alt="" id="BLOGGER_PHOTO_ID_5060617861589346306" border="0" /&gt;&lt;/a&gt;Добавляем простой HTML-регион:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_rOh27G9-PIg/RjrtIgAHqBI/AAAAAAAAAG8/odRR2txIiuA/s1600-h/3.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_rOh27G9-PIg/RjrtIgAHqBI/AAAAAAAAAG8/odRR2txIiuA/s320/3.JPG" alt="" id="BLOGGER_PHOTO_ID_5060617861589346322" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_rOh27G9-PIg/RjrtIwAHqCI/AAAAAAAAAHE/YuU5aF_MuCQ/s1600-h/4.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_rOh27G9-PIg/RjrtIwAHqCI/AAAAAAAAAHE/YuU5aF_MuCQ/s320/4.JPG" alt="" id="BLOGGER_PHOTO_ID_5060617865884313634" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Выставляем заголовок для региона - "Поиск" и номер последовательности выбираем такой, чтобы номера всех остальных регионов приложения были больше. Таким образом, мы сообщаем Apex'у о том, что создаваемый регион необходимо выводить на странице самым первым:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_rOh27G9-PIg/RjrtIwAHqDI/AAAAAAAAAHM/Mj6ZzwtgZmo/s1600-h/5.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_rOh27G9-PIg/RjrtIwAHqDI/AAAAAAAAAHM/Mj6ZzwtgZmo/s320/5.JPG" alt="" id="BLOGGER_PHOTO_ID_5060617865884313650" border="0" /&gt;&lt;/a&gt;Источник оставляем пустым:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_rOh27G9-PIg/RjrtUAAHqEI/AAAAAAAAAHU/0wwoaJIgzuM/s1600-h/6.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_rOh27G9-PIg/RjrtUAAHqEI/AAAAAAAAAHU/0wwoaJIgzuM/s320/6.JPG" alt="" id="BLOGGER_PHOTO_ID_5060618059157841986" border="0" /&gt;&lt;/a&gt;В результате, видим новый регион:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_rOh27G9-PIg/RjrtUAAHqFI/AAAAAAAAAHc/CLZN72L3j8U/s1600-h/7.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_rOh27G9-PIg/RjrtUAAHqFI/AAAAAAAAAHc/CLZN72L3j8U/s320/7.JPG" alt="" id="BLOGGER_PHOTO_ID_5060618059157842002" border="0" /&gt;&lt;/a&gt;Следующим шагом будет добавление непосредственно строки поиска и кнопки обновления страницы. Добавляем строку поиска - это будет новый Item:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_rOh27G9-PIg/RjrtUQAHqGI/AAAAAAAAAHk/DWwV7NJ_sck/s1600-h/8.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_rOh27G9-PIg/RjrtUQAHqGI/AAAAAAAAAHk/DWwV7NJ_sck/s320/8.JPG" alt="" id="BLOGGER_PHOTO_ID_5060618063452809314" border="0" /&gt;&lt;/a&gt;Тип элемента - простое текстовое поле:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_rOh27G9-PIg/RjrtUQAHqHI/AAAAAAAAAHs/qC4berspl2U/s1600-h/9.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_rOh27G9-PIg/RjrtUQAHqHI/AAAAAAAAAHs/qC4berspl2U/s320/9.JPG" alt="" id="BLOGGER_PHOTO_ID_5060618063452809330" border="0" /&gt;&lt;/a&gt;Указываем имя элементу и регион, к которому он будет относиться:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_rOh27G9-PIg/RjrtUQAHqII/AAAAAAAAAH0/xr49whgAd9A/s1600-h/10.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_rOh27G9-PIg/RjrtUQAHqII/AAAAAAAAAH0/xr49whgAd9A/s320/10.JPG" alt="" id="BLOGGER_PHOTO_ID_5060618063452809346" border="0" /&gt;&lt;/a&gt;Далее, указываем заголовок строки поиска:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_rOh27G9-PIg/RjrteAAHqJI/AAAAAAAAAH8/kw0-uiyNhtc/s1600-h/11.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_rOh27G9-PIg/RjrteAAHqJI/AAAAAAAAAH8/kw0-uiyNhtc/s320/11.JPG" alt="" id="BLOGGER_PHOTO_ID_5060618230956533906" border="0" /&gt;&lt;/a&gt;И выставляем источник элемента - "не вычисляемый":&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_rOh27G9-PIg/RjrteQAHqKI/AAAAAAAAAIE/qr9CM59NQOU/s1600-h/12.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_rOh27G9-PIg/RjrteQAHqKI/AAAAAAAAAIE/qr9CM59NQOU/s320/12.JPG" alt="" id="BLOGGER_PHOTO_ID_5060618235251501218" border="0" /&gt;&lt;/a&gt;Далее, необходимо добавить кнопку, которая будет сообщать приложению о необходимости обновить страницу с учетом введенной строки поиска:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_rOh27G9-PIg/RjrteQAHqLI/AAAAAAAAAIM/ItdkyGqXq7I/s1600-h/13.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_rOh27G9-PIg/RjrteQAHqLI/AAAAAAAAAIM/ItdkyGqXq7I/s320/13.JPG" alt="" id="BLOGGER_PHOTO_ID_5060618235251501234" border="0" /&gt;&lt;/a&gt;Указываем, к какому региону будет принадлежать новый элемент интерфейса:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_rOh27G9-PIg/RjrteQAHqMI/AAAAAAAAAIU/P4wQTE58qRk/s1600-h/14.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_rOh27G9-PIg/RjrteQAHqMI/AAAAAAAAAIU/P4wQTE58qRk/s320/14.JPG" alt="" id="BLOGGER_PHOTO_ID_5060618235251501250" border="0" /&gt;&lt;/a&gt;Указываем, что кнопка должна располагаться внутри региона, а не за его пределами:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_rOh27G9-PIg/RjrtegAHqNI/AAAAAAAAAIc/5JYfg3L3SXI/s1600-h/15.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_rOh27G9-PIg/RjrtegAHqNI/AAAAAAAAAIc/5JYfg3L3SXI/s320/15.JPG" alt="" id="BLOGGER_PHOTO_ID_5060618239546468562" border="0" /&gt;&lt;/a&gt;Указываем наименование новой кнопки, текст, который будет выведен на ней и шаблон, в соответствии с которым сам контрол будет выводиться на странице:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_rOh27G9-PIg/RjrtzgAHqOI/AAAAAAAAAIk/QJvWT-y-pjE/s1600-h/16.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_rOh27G9-PIg/RjrtzgAHqOI/AAAAAAAAAIk/QJvWT-y-pjE/s320/16.JPG" alt="" id="BLOGGER_PHOTO_ID_5060618600323721442" border="0" /&gt;&lt;/a&gt;Далее, добавим подсказку для строки поиска, для этого необходимо перейти  к описанию соответствующего элемента интерфейса:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_rOh27G9-PIg/RjrtzgAHqPI/AAAAAAAAAIs/9tLyeL75vsE/s1600-h/17.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_rOh27G9-PIg/RjrtzgAHqPI/AAAAAAAAAIs/9tLyeL75vsE/s320/17.JPG" alt="" id="BLOGGER_PHOTO_ID_5060618600323721458" border="0" /&gt;&lt;/a&gt;Перейти в секцию "Help" и ввести текст подсказки:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_rOh27G9-PIg/RjrtzwAHqQI/AAAAAAAAAI0/_I9BKuc4RrY/s1600-h/18.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_rOh27G9-PIg/RjrtzwAHqQI/AAAAAAAAAI0/_I9BKuc4RrY/s320/18.JPG" alt="" id="BLOGGER_PHOTO_ID_5060618604618688770" border="0" /&gt;&lt;/a&gt;Далее, необходимо изменить регион отчета таким образом, чтобы он учитывал строку поиска. Для этого необходимо перейти к описанию региона:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_rOh27G9-PIg/RjrtzwAHqRI/AAAAAAAAAI8/j8FT0-zeDn4/s1600-h/19.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_rOh27G9-PIg/RjrtzwAHqRI/AAAAAAAAAI8/j8FT0-zeDn4/s320/19.JPG" alt="" id="BLOGGER_PHOTO_ID_5060618604618688786" border="0" /&gt;&lt;/a&gt;И в секции "Source" изменить текст запроса:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_rOh27G9-PIg/RjrtzwAHqSI/AAAAAAAAAJE/rDv3owecvy4/s1600-h/20.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_rOh27G9-PIg/RjrtzwAHqSI/AAAAAAAAAJE/rDv3owecvy4/s320/20.JPG" alt="" id="BLOGGER_PHOTO_ID_5060618604618688802" border="0" /&gt;&lt;/a&gt;Далее, необходимо указать приложению на какую страницу необходимо навигироваться после нажатия кнопки поиска. Для этого необходимо создать новый  "Branch":&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_rOh27G9-PIg/RjruNQAHqTI/AAAAAAAAAJM/GwUkInqSIpg/s1600-h/21.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_rOh27G9-PIg/RjruNQAHqTI/AAAAAAAAAJM/GwUkInqSIpg/s320/21.JPG" alt="" id="BLOGGER_PHOTO_ID_5060619042705353010" border="0" /&gt;&lt;/a&gt;Указываем, что будем переходить на страницу:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_rOh27G9-PIg/RjruNQAHqUI/AAAAAAAAAJU/LYfsLMC2jAg/s1600-h/22.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_rOh27G9-PIg/RjruNQAHqUI/AAAAAAAAAJU/LYfsLMC2jAg/s320/22.JPG" alt="" id="BLOGGER_PHOTO_ID_5060619042705353026" border="0" /&gt;&lt;/a&gt;Указываем номер страницы:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_rOh27G9-PIg/RjruNQAHqVI/AAAAAAAAAJc/sa5pFhglxNo/s1600-h/23.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_rOh27G9-PIg/RjruNQAHqVI/AAAAAAAAAJc/sa5pFhglxNo/s320/23.JPG" alt="" id="BLOGGER_PHOTO_ID_5060619042705353042" border="0" /&gt;&lt;/a&gt;Кроме того, указываем, что переходить нужно только в том случае, если была нажата кнопка поиска:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_rOh27G9-PIg/RjruNgAHqWI/AAAAAAAAAJk/Ot4YlyQFT5w/s1600-h/24.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_rOh27G9-PIg/RjruNgAHqWI/AAAAAAAAAJk/Ot4YlyQFT5w/s320/24.JPG" alt="" id="BLOGGER_PHOTO_ID_5060619047000320354" border="0" /&gt;&lt;/a&gt;И, завершающим штрихом, добавляем подсветку результатов поиска. Для этого переходим в описание отчета:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_rOh27G9-PIg/RjruNgAHqXI/AAAAAAAAAJs/Fg4QFpcPQVE/s1600-h/25.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_rOh27G9-PIg/RjruNgAHqXI/AAAAAAAAAJs/Fg4QFpcPQVE/s320/25.JPG" alt="" id="BLOGGER_PHOTO_ID_5060619047000320370" border="0" /&gt;&lt;/a&gt;Переходим к описанию того поля, по которому будет выполняться поиск:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_rOh27G9-PIg/RjrucwAHqYI/AAAAAAAAAJ0/Losa65717g4/s1600-h/26.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_rOh27G9-PIg/RjrucwAHqYI/AAAAAAAAAJ0/Losa65717g4/s320/26.JPG" alt="" id="BLOGGER_PHOTO_ID_5060619308993325442" border="0" /&gt;&lt;/a&gt;И указываем в поле "Highlight Words" наименование того поля, в соответствии со значением которого, необходимо выполнять подсветку:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_rOh27G9-PIg/RjrucwAHqZI/AAAAAAAAAJ8/izTxvDZ2ODM/s1600-h/27.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_rOh27G9-PIg/RjrucwAHqZI/AAAAAAAAAJ8/izTxvDZ2ODM/s320/27.JPG" alt="" id="BLOGGER_PHOTO_ID_5060619308993325458" border="0" /&gt;&lt;/a&gt;Вот и все...&lt;br /&gt;Работу приложения, как всегда можно проверить на &lt;a href="http://apex.oracle.com/pls/otn/f?p=38134"&gt;apex.oracle.com&lt;/a&gt;.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-0876573933122504";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-04-11: http://apex-dev.blogspot.com/
google_ad_channel = "6107414183";
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1045816305977712294-1679913665364298968?l=apex-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apex-dev.blogspot.com/feeds/1679913665364298968/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1045816305977712294&amp;postID=1679913665364298968' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/1679913665364298968'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/1679913665364298968'/><link rel='alternate' type='text/html' href='http://apex-dev.blogspot.com/2007/05/oracle-application-express.html' title='Добавляем поиск и подсветку в отчет Oracle Application Express.'/><author><name>Timoshinin Evgeny</name><uri>http://www.blogger.com/profile/16019140023057398100</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_rOh27G9-PIg/RjrtIgAHqAI/AAAAAAAAAG0/86EFEUz-YTE/s72-c/2.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1045816305977712294.post-5436319806675207646</id><published>2007-04-26T23:04:00.000+04:00</published><updated>2007-05-04T16:23:22.832+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='apex'/><category scheme='http://www.blogger.com/atom/ns#' term='report'/><title type='text'>Особенности использования "Column Link" в отчетах Application Express.</title><content type='html'>В отчетах Oracle Application Express есть возможность создавать переходы как на другие страницы приложения, так и на произвольные ресурсы сети. Для этого используется настройка "Column Link" поля отчета. Например, для созданного ранее &lt;a href="http://apex-dev.blogspot.com/2007/04/apex-mater-detail.html"&gt;приложения&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_rOh27G9-PIg/RjrTbgAHp9I/AAAAAAAAAGc/uxm-3HI5_z4/s1600-h/0.bmp"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_rOh27G9-PIg/RjrTbgAHp9I/AAAAAAAAAGc/uxm-3HI5_z4/s320/0.bmp" alt="apex report Column Link, target=page" id="BLOGGER_PHOTO_ID_5060589600704538578" border="0" /&gt;&lt;/a&gt;    Очевидно, что максимальное количество передаваемых параметров - 3. Однако, это не совсем так...&lt;span class="fullpost"&gt; Количество передаваемых параметров можно увеличить. Это становиться очевидно, если изменить значение в поле "Target" того же блока "Column Link" на "URL". Вот что мы увидим:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_rOh27G9-PIg/RjrVlQAHp-I/AAAAAAAAAGk/T6fxLk8BFWI/s1600-h/1.bmp"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_rOh27G9-PIg/RjrVlQAHp-I/AAAAAAAAAGk/T6fxLk8BFWI/s320/1.bmp" alt="apex report Column Link, target=URL" id="BLOGGER_PHOTO_ID_5060591967231518690" border="0" /&gt;&lt;/a&gt;Поля, куда вводились имена параметров и их новые значения, стали недоступными для редактирования, но появилось новое поле "URL", где виден тот URL, который будет использоваться на самом деле. Синтаксис данной строки хорошо описан в документации на &lt;a href="http://download-uk.oracle.com/docs/cd/B32472_01/doc/appdev.300/b32471/concept.htm#BEIFCDGF"&gt;OTN&lt;/a&gt;.&lt;br /&gt;Таким образом, все передаваемые параметры можно писать именно в строке URL. То есть, если мы захотим передать 4 параметра, то строка будет выглядеть следующим образом:&lt;br /&gt;&lt;pre&gt;"f?p=&amp;APP_ID.:1:&amp;amp;SESSION.::&amp;DEBUG.::P1_TYPE,P2_TYPE,P3_TYPE,P4_TYPE:#OBJECT_TYPE#,2,3,4"&lt;br /&gt;&lt;/pre&gt;,где:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;"&amp;amp;APP_ID." - идентификатор приложения&lt;/li&gt;&lt;br /&gt;&lt;li&gt;"&amp;amp;SESSION." - идентификатор сессии&lt;/li&gt;&lt;br /&gt;&lt;li&gt;"P1_TYPE,P2_TYPE,P3_TYPE,P4_TYPE" - список через запятую тех параметров, которым будет присваиваться новые значения (пробелы не допускаются)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;"#OBJECT_TYPE#,2,3,4" - список новых значений (пробелы не допускаются)&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;В итоге переменной "P1_TYPE" будет присвоено значение из колонки #OBJECT_TYPE# текущего отчета. Переменной "P2_TYPE" будет присвоено значение "2", "P3_TYPE" - "3", "P4_TYPE" - "4".&lt;br /&gt;Важна очередность перечисления наименований переменных и их значений.&lt;br /&gt;Вот и вся хитрость.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-0876573933122504";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-04-11: http://apex-dev.blogspot.com/
google_ad_channel = "6107414183";
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1045816305977712294-5436319806675207646?l=apex-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apex-dev.blogspot.com/feeds/5436319806675207646/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1045816305977712294&amp;postID=5436319806675207646' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/5436319806675207646'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/5436319806675207646'/><link rel='alternate' type='text/html' href='http://apex-dev.blogspot.com/2007/04/column-link-application-express.html' title='Особенности использования &quot;Column Link&quot; в отчетах Application Express.'/><author><name>Timoshinin Evgeny</name><uri>http://www.blogger.com/profile/16019140023057398100</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_rOh27G9-PIg/RjrTbgAHp9I/AAAAAAAAAGc/uxm-3HI5_z4/s72-c/0.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1045816305977712294.post-8566313447690261574</id><published>2007-04-24T22:22:00.000+04:00</published><updated>2007-04-25T20:45:24.945+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='checkbox'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='apex'/><title type='text'>Особенности работы CHECKBOX  в APEX.</title><content type='html'>Хочу немного рассказать об особенностях работы с CheckBox'ом в отчетах Oracle Application Express, так как для меня логика работы не сразу оказалась очевидной &lt;span class="fullpost"&gt;(может быть просто плохо читал документацию :).&lt;br /&gt;Добавить в отчет сам CheckBox очень легко - необходимо просто вызвать функцию APEX_ITEM.CHECKBOX в запросе, на основе которого строится отчет. Например:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Select object_name, object_id, object_type,&lt;br /&gt;       created, apex_item.checkbox(10, object_id)&lt;br /&gt;From User_Objects;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Спецификацию данного метода можно посмотреть в &lt;a href="http://download-uk.oracle.com/docs/cd/B32472_01/doc/appdev.300/b32471/api.htm#CHDDCHAF"&gt;документации&lt;/a&gt;. В основном, используются первые 3 параметра:&lt;br /&gt;&lt;br /&gt;* p_idx - идентификатор глобальной переменной в APEX_APPLICATION&lt;br /&gt;* p_value - значение присваиваемое CheckBox'у (из-за которого-то у меня и возникла путанница)&lt;br /&gt;* p_attributes - HTML атрибуты.&lt;br /&gt;&lt;br /&gt;Основная задача, при работе с CheckBox'ом - это обойти их все и получить список либо отмеченных, либо не отмеченных. Вот тут и начинаются вопросы...&lt;br /&gt;&lt;br /&gt;Доступ к значению контрола можно получить через список глобальных переменных пакета &lt;code&gt;APEX_APPLICATION&lt;/code&gt;. То есть, для запроса, приведенного выше, значение получается через переменную &lt;code&gt;APEX_APPLICATION&lt;/code&gt;.g_f10.&lt;br /&gt;&lt;br /&gt;Логично было бы предположить, что выбрать все отмеченные чек-боксы можно так:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Begin&lt;br /&gt; For i In 1 .. APEX_APPLICATION.g_f10.Count Loop&lt;br /&gt;    If APEX_APPLICATION.g_f10(i) = 1 Then&lt;br /&gt;     ....&lt;br /&gt;    End If;&lt;br /&gt; End Loop;&lt;br /&gt;End;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Ан нет... Чтобы получить все отмеченные чек-боксы, необходим цикл немного проще:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Begin&lt;br /&gt; For i In 1 .. APEX_APPLICATION.g_f10.Count Loop&lt;br /&gt;     ....&lt;br /&gt; End Loop;&lt;br /&gt;End;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;То есть, APEX_APPLICATION.g_f10 содержит ТОЛЬКО ОТМЕЧЕННЫЕ чек-боксы!&lt;br /&gt;Кроме того, параметр p_value содержит не состояние чек-бокса, а именно значение.&lt;br /&gt;За состояние чек-бокса отвечает третий параметр - p_attributes. То есть, для того, чтобы контрол был включен необходимо задавать не "p_value = 1", а "p_attributes='CHECKED' ", например:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Select object_name, object_id,&lt;br /&gt;      object_type, created,&lt;br /&gt;      apex_item.checkbox(10, object_id,&lt;br /&gt;                             DECODE( mod(object_id, 10),&lt;br /&gt;                                     1,&lt;br /&gt;                                     'CHECKED',&lt;br /&gt;                                     null&lt;br /&gt;                                   )&lt;br /&gt;                        )&lt;br /&gt;From User_Objects;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Вот так...&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-0876573933122504";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-04-11: http://apex-dev.blogspot.com/
google_ad_channel = "6107414183";
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1045816305977712294-8566313447690261574?l=apex-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apex-dev.blogspot.com/feeds/8566313447690261574/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1045816305977712294&amp;postID=8566313447690261574' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/8566313447690261574'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/8566313447690261574'/><link rel='alternate' type='text/html' href='http://apex-dev.blogspot.com/2007/04/checkbox-apex.html' title='Особенности работы CHECKBOX  в APEX.'/><author><name>Timoshinin Evgeny</name><uri>http://www.blogger.com/profile/16019140023057398100</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1045816305977712294.post-6843172070142335147</id><published>2007-04-21T11:11:00.000+04:00</published><updated>2007-04-23T16:09:06.255+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='howto'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='apex'/><title type='text'>APEX. Добавляем ссылки (URL) в приложение.</title><content type='html'>В этом примере будет продемонстрирована возможность добавления ссылок  (URL) в APEX приложение, а так же подход к созданию элементов GUI, доступных во всех страницах приложения. &lt;span class="fullpost"&gt;&lt;br /&gt;    Как уже было отмечено &lt;a href="http://apex-dev.blogspot.com/2007/03/apex-page-0.html"&gt;ранее&lt;/a&gt;, Oracle Application Express позволяет добавить страницу в приложение, которая будет отображаться одновременно со всеми остальными.    Отличительной особенностью этой страницы является лишь ее номер - "0".&lt;br /&gt;    Итак, начнем.... сначала добавим в приложение страницу с номером "0", а потом разместим на ней ссылку на блог :). Добавление нулевой страницы проходит по обычному сценарию, поэтому ограничимся лишь снимками:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_rOh27G9-PIg/RiyPpVUR5qI/AAAAAAAAADs/-AN7AErZYLM/s1600-h/0.GIF"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_rOh27G9-PIg/RiyPpVUR5qI/AAAAAAAAADs/-AN7AErZYLM/s320/0.GIF" alt="apex. start to add page" id="BLOGGER_PHOTO_ID_5056574421889836706" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_rOh27G9-PIg/RiyQNVUR5vI/AAAAAAAAAEU/HV37OhSsDSw/s1600-h/1.GIF"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_rOh27G9-PIg/RiyQNVUR5vI/AAAAAAAAAEU/HV37OhSsDSw/s320/1.GIF" alt="apex. adding page 1" id="BLOGGER_PHOTO_ID_5056575040365127410" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_rOh27G9-PIg/RiyQEVUR5uI/AAAAAAAAAEM/GngFOtSL-8o/s1600-h/2.GIF"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_rOh27G9-PIg/RiyQEVUR5uI/AAAAAAAAAEM/GngFOtSL-8o/s320/2.GIF" alt="apex. adding page 2" id="BLOGGER_PHOTO_ID_5056574885746304738" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_rOh27G9-PIg/RiyP_VUR5tI/AAAAAAAAAEE/K-02ZilCUsQ/s1600-h/3.GIF"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_rOh27G9-PIg/RiyP_VUR5tI/AAAAAAAAAEE/K-02ZilCUsQ/s320/3.GIF" alt="apex. adding page 3" id="BLOGGER_PHOTO_ID_5056574799846958802" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_rOh27G9-PIg/RiyP7FUR5sI/AAAAAAAAAD8/qzXB_KXWfhI/s1600-h/4.GIF"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_rOh27G9-PIg/RiyP7FUR5sI/AAAAAAAAAD8/qzXB_KXWfhI/s320/4.GIF" alt="apex. adding page 4" id="BLOGGER_PHOTO_ID_5056574726832514754" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_rOh27G9-PIg/RiyP2VUR5rI/AAAAAAAAAD0/MyeF-1JSgvk/s1600-h/5.GIF"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_rOh27G9-PIg/RiyP2VUR5rI/AAAAAAAAAD0/MyeF-1JSgvk/s320/5.GIF" alt="apex. adding page 5" id="BLOGGER_PHOTO_ID_5056574645228136114" border="0" /&gt;&lt;/a&gt;После этого, переходим к редактированию только что добавленной страницы:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_rOh27G9-PIg/RiyRO1UR5wI/AAAAAAAAAEc/XPdTTz4HWK4/s1600-h/6.GIF"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_rOh27G9-PIg/RiyRO1UR5wI/AAAAAAAAAEc/XPdTTz4HWK4/s320/6.GIF" alt="apex. edit new page" id="BLOGGER_PHOTO_ID_5056576165646558978" border="0" /&gt;&lt;/a&gt;Для того, чтобы добавлять на страницу какие-либо элементы управления, необходимо добавить на нее регион:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_rOh27G9-PIg/RiySVFUR5xI/AAAAAAAAAEk/nXgp22o5mv0/s1600-h/7.GIF"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_rOh27G9-PIg/RiySVFUR5xI/AAAAAAAAAEk/nXgp22o5mv0/s320/7.GIF" alt="apex. add region to the page" id="BLOGGER_PHOTO_ID_5056577372532369170" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class="fullpost"&gt;Добавляем пустой регион:&lt;/span&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_rOh27G9-PIg/RiyVZ1UR51I/AAAAAAAAAFE/e3iIent9__o/s1600-h/8.GIF"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_rOh27G9-PIg/RiyVZ1UR51I/AAAAAAAAAFE/e3iIent9__o/s320/8.GIF" alt="apex. add region to the page 1" id="BLOGGER_PHOTO_ID_5056580752671631186" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_rOh27G9-PIg/RiyVUlUR50I/AAAAAAAAAE8/hRfruDFnpCU/s1600-h/9.GIF"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_rOh27G9-PIg/RiyVUlUR50I/AAAAAAAAAE8/hRfruDFnpCU/s320/9.GIF" alt="apex. add region to the page 2" id="BLOGGER_PHOTO_ID_5056580662477317954" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Чтобы не было видно названия региона, не выбираем какого-либо шаблона, то есть, выбираем "No Template". Кроме того, чтобы страница выводилась вверху, выбираем Display Point - "After Header":&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_rOh27G9-PIg/RiyVO1UR5zI/AAAAAAAAAE0/tLmiNDyZAkQ/s1600-h/10.GIF"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_rOh27G9-PIg/RiyVO1UR5zI/AAAAAAAAAE0/tLmiNDyZAkQ/s320/10.GIF" alt="apex. add region to the page 3" id="BLOGGER_PHOTO_ID_5056580563693070130" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Источник региона оставляем пустым, условия для отражения не накладываются.&lt;br /&gt;После того, как был добавлен регион, в него можно начать добавлять элементы управления:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_rOh27G9-PIg/RiyVI1UR5yI/AAAAAAAAAEs/Nxj7YnWATko/s1600-h/11.GIF"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_rOh27G9-PIg/RiyVI1UR5yI/AAAAAAAAAEs/Nxj7YnWATko/s320/11.GIF" alt="apex. add region to the page 5" id="BLOGGER_PHOTO_ID_5056580460613855010" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Добавим простой текст, который будет содержать текст URL - сылки:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_rOh27G9-PIg/RiyYa1UR57I/AAAAAAAAAF0/axozQe31_2s/s1600-h/12.GIF"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_rOh27G9-PIg/RiyYa1UR57I/AAAAAAAAAF0/axozQe31_2s/s320/12.GIF" alt="apex. add element to the region 1" id="BLOGGER_PHOTO_ID_5056584068386383794" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_rOh27G9-PIg/RiyYVFUR56I/AAAAAAAAAFs/h2nfp2rvqX4/s1600-h/13.GIF"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_rOh27G9-PIg/RiyYVFUR56I/AAAAAAAAAFs/h2nfp2rvqX4/s320/13.GIF" alt="apex. add element to the region 2" id="BLOGGER_PHOTO_ID_5056583969602135970" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_rOh27G9-PIg/RiyYCVUR54I/AAAAAAAAAFc/PJICMBJnfQk/s1600-h/14.GIF"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_rOh27G9-PIg/RiyYCVUR54I/AAAAAAAAAFc/PJICMBJnfQk/s320/14.GIF" alt="apex. add element to the region 3" id="BLOGGER_PHOTO_ID_5056583647479588738" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Названия для элемента не указываем, чтобы оно не отражалось на странице и выбираем соответствующий label template - "No Label":&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_rOh27G9-PIg/RiyYMVUR55I/AAAAAAAAAFk/x7IpUjwr3kc/s1600-h/15.GIF"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_rOh27G9-PIg/RiyYMVUR55I/AAAAAAAAAFk/x7IpUjwr3kc/s320/15.GIF" alt="apex. add element to the region 4" id="BLOGGER_PHOTO_ID_5056583819278280594" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_rOh27G9-PIg/RiyX3VUR53I/AAAAAAAAAFU/N-_zrUy0lqY/s1600-h/16.GIF"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_rOh27G9-PIg/RiyX3VUR53I/AAAAAAAAAFU/N-_zrUy0lqY/s320/16.GIF" alt="apex. add element to the region 5" id="BLOGGER_PHOTO_ID_5056583458501027698" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_rOh27G9-PIg/RiyXxFUR52I/AAAAAAAAAFM/fN_Pkb8HZmk/s1600-h/17.GIF"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_rOh27G9-PIg/RiyXxFUR52I/AAAAAAAAAFM/fN_Pkb8HZmk/s320/17.GIF" alt="apex. add element to the region 6" id="BLOGGER_PHOTO_ID_5056583351126845282" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;После этого переходим к описанию только что созданного элемента, и добавляем непосредственно текст ссылки на блог:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_rOh27G9-PIg/Riya4VUR58I/AAAAAAAAAF8/d9eZnVlBlqs/s1600-h/18.GIF"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_rOh27G9-PIg/Riya4VUR58I/AAAAAAAAAF8/d9eZnVlBlqs/s320/18.GIF" alt="apex.edit element at the region" id="BLOGGER_PHOTO_ID_5056586774215780290" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Теперь страница работающего приложения будет выглядеть следующим образом:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_rOh27G9-PIg/RiybRFUR59I/AAAAAAAAAGE/DLZlCgTTlyM/s1600-h/19.GIF"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_rOh27G9-PIg/RiybRFUR59I/AAAAAAAAAGE/DLZlCgTTlyM/s320/19.GIF" alt="apex.run new application" id="BLOGGER_PHOTO_ID_5056587199417542610" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Чтобы ссылка на блог "висела"в правом углу, а не в левом, просто указываем ширину элемента:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_rOh27G9-PIg/Riyfb1UR5_I/AAAAAAAAAGU/mIE2tMz0nno/s1600-h/20.GIF"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_rOh27G9-PIg/Riyfb1UR5_I/AAAAAAAAAGU/mIE2tMz0nno/s320/20.GIF" alt="apex.set width at element" id="BLOGGER_PHOTO_ID_5056591782147647474" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Работу приложения, как всегда, можно посмотреть на &lt;a href="http://apex.oracle.com/pls/otn/f?p=38134"&gt;apex.oracle.com&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-0876573933122504";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-04-11: http://apex-dev.blogspot.com/
google_ad_channel = "6107414183";
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1045816305977712294-6843172070142335147?l=apex-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apex-dev.blogspot.com/feeds/6843172070142335147/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1045816305977712294&amp;postID=6843172070142335147' title='Комментарии: 5'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/6843172070142335147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/6843172070142335147'/><link rel='alternate' type='text/html' href='http://apex-dev.blogspot.com/2007/04/apex-url.html' title='APEX. Добавляем ссылки (URL) в приложение.'/><author><name>Timoshinin Evgeny</name><uri>http://www.blogger.com/profile/16019140023057398100</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_rOh27G9-PIg/RiyPpVUR5qI/AAAAAAAAADs/-AN7AErZYLM/s72-c/0.GIF' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1045816305977712294.post-3283024025428291651</id><published>2007-04-15T22:11:00.000+04:00</published><updated>2007-04-17T12:00:54.457+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='howto'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='apex'/><title type='text'>Apex. Добавялем возможность экспорта... CSV, XML</title><content type='html'>Продолжаем серию статей, демонстрирующую на примерах процесс создания приложений в Oracle Application Express, и сегодня будем развивать приложение, &lt;a href="http://apex-dev.blogspot.com/2007/04/apex-mater-detail.html"&gt;созданное ранее&lt;/a&gt;.&lt;br /&gt;Одним из наиболее часто встречающихся требований для приложений является возможность вывода информации в различные форматы электронных документов. В этом примере постараемся добавить возможность экспорта данных в CSV и XML форматы.&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;Сначала попытаемся экспортировать данные в CSV. Есть несколько вариантов реализации, например:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;использование стандартной опции "&lt;span class="fieldtitlebold"&gt;Enable CSV output&lt;/span&gt;"&lt;br /&gt;&lt;/li&gt;&lt;li&gt;использование типа отчета "&lt;span class="instructiontext"&gt;export: CSV&lt;/span&gt;"&lt;/li&gt;&lt;/ul&gt;Сначала, воспользуемся стандартной опцией. Для этого необходимо зайти в определение страницы:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_rOh27G9-PIg/RiMmVVVzDxI/AAAAAAAAACU/xhq7fUfhBUo/s1600-h/0.GIF"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_rOh27G9-PIg/RiMmVVVzDxI/AAAAAAAAACU/xhq7fUfhBUo/s320/0.GIF" alt="APEX page definition" id="BLOGGER_PHOTO_ID_5053925354787507986" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;После чего - в описание отчета:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_rOh27G9-PIg/RiMlN1VzDvI/AAAAAAAAACE/YkahmakUMKI/s1600-h/1.GIF"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_rOh27G9-PIg/RiMlN1VzDvI/AAAAAAAAACE/YkahmakUMKI/s320/1.GIF" alt="APEX report definition" id="BLOGGER_PHOTO_ID_5053924126426861298" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;и изменить следующие настройки в разделе "Report Export":&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_rOh27G9-PIg/RiMlSlVzDwI/AAAAAAAAACM/XfL4R_P33Ao/s1600-h/2.GIF"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_rOh27G9-PIg/RiMlSlVzDwI/AAAAAAAAACM/XfL4R_P33Ao/s320/2.GIF" alt="Apex option Report Export" id="BLOGGER_PHOTO_ID_5053924208031239938" border="0" /&gt;&lt;/a&gt;Назначение этих настроек следующее:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="fieldtitlebold"&gt;"Enable CSV output&lt;/span&gt;" - задает непосредственную возможность экспорта в CSV&lt;br /&gt;&lt;/li&gt;&lt;li&gt;"&lt;span class="fieldtitlebold"&gt;Separator&lt;/span&gt;" - задает разделитель значений колонок. Если не задавать значения, то будет использоваться либо запятая, либо точка с запятой в зависимости от текущих NLS настроек.&lt;/li&gt;&lt;li&gt;"&lt;span class="fieldtitlebold"&gt;Enclosed By&lt;/span&gt;" - символ, обозначающий начало и конец значения колонки. Если не задан, то используются двойные кавычки.&lt;/li&gt;&lt;li&gt;"&lt;span class="fieldtitlebold"&gt;Link Label&lt;/span&gt;" - текст для ссылки, которая будет вызывать диалог для сохранения CSV файла.&lt;/li&gt;&lt;li&gt;"&lt;span class="fieldtitlebold"&gt;Filename&lt;/span&gt;" - задает имя для экспортируемого файла. Если не задается, то используется имя региона отчета.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;После чего, &lt;a href="http://apex.oracle.com/pls/otn/f?p=38134"&gt;запустив приложение&lt;/a&gt;, можно будет заметить появление нового элемента в отчете "Типы объектов" - "Экспорт в CSV":&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_rOh27G9-PIg/RiMnG1VzDyI/AAAAAAAAACc/I6NP-IMQde8/s1600-h/3.GIF"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_rOh27G9-PIg/RiMnG1VzDyI/AAAAAAAAACc/I6NP-IMQde8/s320/3.GIF" alt="APEX witn export to csv" id="BLOGGER_PHOTO_ID_5053926205191032610" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Теперь же, попробуем реализовать экспорт данных отчета через настройку "&lt;span class="fieldtitlebold"&gt;Report Template&lt;/span&gt;" секции "Layout and Pagination" описания отчета. Для того, чтобы отчет экспортировался в CSV, необходимо просто выставить  "&lt;span class="fieldtitlebold"&gt;Report Template&lt;/span&gt;" = "&lt;span class="instructiontext"&gt;export: CSV&lt;/span&gt;".&lt;br /&gt;&lt;br /&gt;Особенность этой реализации заключается в том, что при запуске такого отчета будет сразу запускаться механизм формирования CSV файла. То есть, при попытке открытия страницы, где располагается такой отчет, сразу появится диалоговое окно в предложением сохранить файл. Для пользователя это будет не всегда удобно, так как ему не всегда необходим экспортированный отчет, а порой достаточно простого вывода отчета в HTML.&lt;br /&gt;&lt;br /&gt;Соответственно, чтобы позволять пользователю по желанию экспортировать отчеты, необходимо вынести такой отчет на отдельную страницу и позволять пользователю ее вызывать. Для этого, создаем новую страницу в приложении:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_rOh27G9-PIg/RiNEtlVzDzI/AAAAAAAAACk/8eowadr3jFk/s1600-h/4.GIF"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_rOh27G9-PIg/RiNEtlVzDzI/AAAAAAAAACk/8eowadr3jFk/s320/4.GIF" alt="APEX create new page" id="BLOGGER_PHOTO_ID_5053958756748169010" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Выбираем следующие свойства новой страницы:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="fieldtitlebold"&gt;"page type" = "&lt;/span&gt;&lt;span class="fielddata"&gt;Blank Page&lt;/span&gt;&lt;span class="fieldtitlebold"&gt;"&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="fieldtitlebold"&gt;"name" = "MainReportExport"&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="fieldtitlebold"&gt;"title" = "MainReportExport"&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="fieldtitlebold"&gt;"Breadcrumb" = "- do not use breadcrumbs on page -"&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="fieldtitlebold"&gt;"Use Tabs" = "No"&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;Сразу переходим к редактированию страницы, и добавляем в нее новый регион:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_rOh27G9-PIg/RiNFAFVzD0I/AAAAAAAAACs/oCM1NqBC_6c/s1600-h/5.GIF"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_rOh27G9-PIg/RiNFAFVzD0I/AAAAAAAAACs/oCM1NqBC_6c/s320/5.GIF" alt="APEX add new region to page" id="BLOGGER_PHOTO_ID_5053959074575748930" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Выбираем следующие свойства региона:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="instructiontext"&gt;"Region Type" = "&lt;/span&gt;&lt;span class="fielddata"&gt;Report&lt;/span&gt;&lt;span class="instructiontext"&gt;"&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="instructiontext"&gt;"&lt;/span&gt;&lt;span class="fieldtitlebold"&gt;Report Implementation&lt;/span&gt;&lt;span class="instructiontext"&gt;" = "&lt;/span&gt;&lt;span class="fielddata"&gt;SQL Report&lt;/span&gt;&lt;span class="instructiontext"&gt;"&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="instructiontext"&gt;"Title" = "Object_Types"&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="instructiontext"&gt;"&lt;/span&gt;&lt;span class="fieldtitlebold"&gt;Region Template&lt;/span&gt;&lt;span class="instructiontext"&gt;" = "Reports region"&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="instructiontext"&gt;"Display Point" = "Page Template Body (3. items above region content)"&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="fieldtitlebold"&gt;"Source":                              &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: center;"&gt;&lt;span class="fieldtitlebold"&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;       Select Object_Type, Count(*)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="fieldtitlebold"&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;                     From User_Objects&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="fieldtitlebold"&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt; Group By Object_Type&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="fieldtitlebold"&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="fieldtitlebold"&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;"&lt;span class="fieldtitlebold"&gt;Report Template&lt;/span&gt;" = "&lt;span class="instructiontext"&gt;export: CSV&lt;/span&gt;"&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span class="fieldtitlebold"&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;Теперь приложение состоит из двух основных форм "Main", "MainReportExport":&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_rOh27G9-PIg/RiNFQlVzD1I/AAAAAAAAAC0/vqE076jz1_o/s1600-h/6.GIF"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_rOh27G9-PIg/RiNFQlVzD1I/AAAAAAAAAC0/vqE076jz1_o/s320/6.GIF" alt="APEX application pages" id="BLOGGER_PHOTO_ID_5053959358043590482" border="0" /&gt;&lt;/a&gt;Осталось только добавить на первую страницу ("Main") средство перехода на только что созданную страницу. Для этого переходим в описание исходной страницы и добавляем в нее кнопку:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;"region for the button" = "&lt;span class="fielddata"&gt;&lt;label for="P167_REGION_2"&gt;Типы объектов (1) 11&lt;/label&gt;&lt;/span&gt;"&lt;/li&gt;&lt;li&gt;"position" = "&lt;span class="fielddata"&gt;&lt;label for="P379_WHERE_0"&gt;Create a button in a region position&lt;/label&gt;&lt;/span&gt;"&lt;/li&gt;&lt;li&gt;"button name" = "EXPORT2CSV"&lt;/li&gt;&lt;li&gt;"label" = "Экспртировать в CSV"&lt;/li&gt;&lt;li&gt;"position" = "Bottom of Region"&lt;/li&gt;&lt;li&gt;"alignment" = "left"&lt;/li&gt;&lt;li&gt;&lt;span class="fieldtitlebold"&gt;"branch to page(when button pressed)" = "2" (выбираем из списка созданную ранее страницу)&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;Результат:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_rOh27G9-PIg/RiNGNFVzD2I/AAAAAAAAAC8/TpaqE-EyRMk/s1600-h/7.GIF"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_rOh27G9-PIg/RiNGNFVzD2I/AAAAAAAAAC8/TpaqE-EyRMk/s320/7.GIF" alt="APEX application with export to csv ability" id="BLOGGER_PHOTO_ID_5053960397425676130" border="0" /&gt;&lt;/a&gt;Теперь  при нажатии кнопки будет так же формироваться отчет в CSV.&lt;br /&gt;&lt;br /&gt;Аналогичным же образом реализуется экспорт и в XML. Необходимо добавить на страницу "MainReportExport" еще один регион, аналогичный тому, который уже был добавлен ранее, за исключением опции "&lt;span class="fieldtitlebold"&gt;Report Template&lt;/span&gt;", которую необходимо будет задать в "&lt;span class="instructiontext"&gt;export: XML&lt;/span&gt;":&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_rOh27G9-PIg/RiNaklVzD3I/AAAAAAAAADE/BVje1iMvXMo/s1600-h/8.GIF"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_rOh27G9-PIg/RiNaklVzD3I/AAAAAAAAADE/BVje1iMvXMo/s320/8.GIF" alt="" id="BLOGGER_PHOTO_ID_5053982791385157490" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Таким образом, мы имеем на одной странице два экспортируемых отчета и нам необходимо иметь возможность запускать какой-то один из них. Для этого добавляем на страницу "MainReportExport" невидимый элемент, задавая который при переходе, мы будем в состоянии регулировать запуск того или иного отчета, расположенного на странице. Задаем элементу следующие параметры:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;"Item type" = "&lt;span class="fielddata"&gt;&lt;label for="P366_ITEM_TYPE_4"&gt;Hidden&lt;/label&gt;&lt;/span&gt;"&lt;/li&gt;&lt;li&gt;"Item name" = "P2_EXP_TYPE"&lt;/li&gt;&lt;/ul&gt;Корректируем регион экспорта в CSV - "Object_Types" в секции "Conditional Display":&lt;br /&gt;&lt;ul&gt;&lt;li&gt; "Condition Type" = "Value of Item in Expression 1 = Expression 2"&lt;/li&gt;&lt;li&gt;"Expression 1" = "P2_EXP_TYPE"&lt;/li&gt;&lt;li&gt;"Expression 2" = "CSV"&lt;/li&gt;&lt;/ul&gt;Корректируем регион экспорта в XML - "Object_Types_Xml" в секции "Conditional Display":&lt;br /&gt;&lt;ul&gt;&lt;li&gt; "Condition Type" = "Value of Item in Expression 1 = Expression 2"&lt;/li&gt;&lt;li&gt;"Expression 1" = "P2_EXP_TYPE"&lt;/li&gt;&lt;li&gt;"Expression 2" = "XML"&lt;/li&gt;&lt;/ul&gt;Осталось только реализовать заполнение поля P2_EXP_TYPE. Для этого в странице "Main" редактируем описание имеющейся кнопки:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_rOh27G9-PIg/RiNbcFVzD4I/AAAAAAAAADM/XeNp0RWacQw/s1600-h/9.GIF"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_rOh27G9-PIg/RiNbcFVzD4I/AAAAAAAAADM/XeNp0RWacQw/s320/9.GIF" alt="" id="BLOGGER_PHOTO_ID_5053983744867897218" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Изменяем следующие свойства:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_rOh27G9-PIg/RiNb-FVzD5I/AAAAAAAAADU/tbP4DClRMng/s1600-h/10.GIF"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_rOh27G9-PIg/RiNb-FVzD5I/AAAAAAAAADU/tbP4DClRMng/s320/10.GIF" alt="" id="BLOGGER_PHOTO_ID_5053984328983449490" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;То есть, при переходе по этой кнопке в страницу отчетов будет отрабатывать CSV отчет. Для XML добавляем еще одну кнопку:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;"region for the button" = "&lt;span class="fielddata"&gt;&lt;label for="P167_REGION_2"&gt;Типы объектов (1) 11&lt;/label&gt;&lt;/span&gt;"&lt;/li&gt;&lt;li&gt;"position" = "&lt;span class="fielddata"&gt;&lt;label for="P379_WHERE_0"&gt;Create a button in a region position&lt;/label&gt;&lt;/span&gt;"&lt;/li&gt;&lt;li&gt;"button name" = "EXPORT2XML"&lt;/li&gt;&lt;li&gt;"label" = "Экспртировать в XML"&lt;/li&gt;&lt;li&gt;"position" = "Bottom of Region"&lt;/li&gt;&lt;li&gt;"alignment" = "left"&lt;/li&gt;&lt;li&gt;&lt;span class="fieldtitlebold"&gt;"branch to page(when button pressed)" = "2"&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;После чего в описании новой кнопки выставляем следующие свойства:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_rOh27G9-PIg/RiNduFVzD6I/AAAAAAAAADc/__TMh6UE_Ow/s1600-h/11.GIF"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_rOh27G9-PIg/RiNduFVzD6I/AAAAAAAAADc/__TMh6UE_Ow/s320/11.GIF" alt="" id="BLOGGER_PHOTO_ID_5053986253128798114" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;То есть, при переходе через эту кнопку будет отрабатывать экспорт отчета в XML. Главная страница, при этом, примет следующий вид:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_rOh27G9-PIg/RiNgJVVzD7I/AAAAAAAAADk/3y8leedotPU/s1600-h/12.GIF"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_rOh27G9-PIg/RiNgJVVzD7I/AAAAAAAAADk/3y8leedotPU/s320/12.GIF" alt="APEX application example" id="BLOGGER_PHOTO_ID_5053988920303488946" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Вот, собственно и все. Проверить приложение в работе можно на &lt;a href="http://apex.oracle.com/pls/otn/f?p=38134"&gt;apex.oracle.com&lt;/a&gt;.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-0876573933122504";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-04-11: http://apex-dev.blogspot.com/
google_ad_channel = "6107414183";
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1045816305977712294-3283024025428291651?l=apex-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apex-dev.blogspot.com/feeds/3283024025428291651/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1045816305977712294&amp;postID=3283024025428291651' title='Комментарии: 10'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/3283024025428291651'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/3283024025428291651'/><link rel='alternate' type='text/html' href='http://apex-dev.blogspot.com/2007/04/apex-csv-xml.html' title='Apex. Добавялем возможность экспорта... CSV, XML'/><author><name>Timoshinin Evgeny</name><uri>http://www.blogger.com/profile/16019140023057398100</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_rOh27G9-PIg/RiMmVVVzDxI/AAAAAAAAACU/xhq7fUfhBUo/s72-c/0.GIF' height='72' width='72'/><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1045816305977712294.post-1103391263185310274</id><published>2007-04-11T22:00:00.000+04:00</published><updated>2007-06-03T00:20:18.428+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='apex'/><category scheme='http://www.blogger.com/atom/ns#' term='translation'/><title type='text'>Наиболее часто встречающиеся проблемы в APEX 3.0 / FAQ</title><content type='html'>Прошло совсем немного времени с момента выхода Oracle Application Express 3.0, но уже сейчас можно составить список наиболее часто встречающихся проблем. Пока их менее 10 :) &lt;span class="fullpost"&gt;:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Отсутствие описания страниц в Application Builder:&lt;/li&gt;&lt;br /&gt;Если описание страниц не содержит никаких элементов, просто обновите страницу (Shift + Ctrl + R). После этого Application Builder полностью перерисует страницу и покажет ее описание. Обновление необходимо для того, чтобы очистить кэш браузера и скачать последние версии CSS и JavaScript'ов, от которых зависит интерфейc.&lt;br /&gt;&lt;br /&gt;Пример проблемной страницы:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.oracle.com/technology/products/database/application_express/our_images/partial_page_edit.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" src="http://www.oracle.com/technology/products/database/application_express/our_images/partial_page_edit.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Появление фраз, наподобие 'not found', вместо иконок:&lt;/li&gt;&lt;br /&gt;Во время выполнения пост - инсталляционных действий (post-installation task) необходимо обновить директорию, где находятся изображения. Эта директория содержит новые файлы, которые необходимы для APEX 3.0: иконки, CSS, JavaScript и т.д.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Появление HTML тэгов и разметки на страницах приложения:&lt;/li&gt;&lt;br /&gt;Необходимо убедиться, что установлен PL/SQL Web Toolkit версии 10.1.2.0.6 или выше. Если версия оказалась ниже, то необходимо ознакомиться с инструкцией по установке, расположенной в apex/owa/README.txt.&lt;br /&gt;&lt;br /&gt;(сейчас работаю с площадками, где запрос "select owa_util.get_version from dual"  возвращает "10.1.2.0.5" и пока никаких проблем не было. Oracle - 10.2.0.3.0)&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Появление искаженных букв или знаков вопроса на страницах приложения:&lt;/li&gt;&lt;br /&gt;Необходимо убедиться, что составляющая параметра PlsqlNLSLanguage, отвечающая за кодировку, в Database Access Descriptor (DAD) установлена AL32UTF8.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Проблемы при просмотре дневных и недельных расписаний, добавленных в существующее приложение:&lt;/li&gt;&lt;br /&gt;Проблема возникает в случае, если приложение было создано в APEX 2.2 или ранее: в нем отсутствуют атрибуты нового шаблона календаря, необходимые для отражения еженедельных и ежедневных отчетов. Есть два варианта решения проблемы:&lt;ol&gt;&lt;li&gt;вручную обновить шаблон календаря, используемый приложением&lt;/li&gt;&lt;li&gt;создать новую тему из репозитария и перевести приложение на эту тему. Новая тема будет содержать все необходимые шаблоны, используемые в Application Express 3.0.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Обрыв инсталляции APEX 3.0 с ошибкой ORA-06502:&lt;/li&gt;&lt;br /&gt;Если инсталяция обрывается с ошибкой:&lt;br /&gt;&lt;pre&gt;...PAGE 124: Subscribed Templates&lt;br /&gt;Error creating button name="REFRESH" id="181590632003554484" ORA-06502: PL/SQL:&lt;br /&gt;numeric or value error: character string buffer too small&lt;br /&gt;ORA-06512: at&lt;br /&gt;"FLOWS_030000.WWV_BIU_STEP_BUTTONS", line 24&lt;br /&gt;ORA-04088: error during execution of trigger 'FLOWS_030000&lt;span style="font-family:Georgia,serif;"&gt; &lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Необходимо проверить параметр базы данных NLS_LENGTH_SEMANTICS. Если он равен CHAR, то:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;необходимо выполнить шаги, описанные в главе "&lt;a href="http://download-uk.oracle.com/docs/cd/B32472_01/doc/install.300/b32468/trouble.htm#BABDJIFE"&gt;Cleaning Up After a Failed Installation&lt;/a&gt;" документации. После чего выполнить:&lt;pre&gt;DROP user FLOWS_030000 CASCADE;&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;начать снова инсталляцию, но перед выполнением скрипта apexins.sql, выполнить:&lt;pre&gt;ALTER SESSION SET NLS_LENGTH_SEMANTICS=BYTE;&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;выполнить скрипт apexins.sql&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Появление ошибки ERR-3331 при попытке сохранить изменения в Application Builder: &lt;/li&gt;&lt;br /&gt;Если во время разработки приложения, после попытки сохранить изменения, появилась ошибка:&lt;br /&gt;&lt;pre&gt;ERR-3331 This page was already submitted and can not be re-submitted.&lt;span style="font-family:Georgia,serif;"&gt; &lt;/span&gt;&lt;/pre&gt;Необходимо вернуться на страницу, где выполнялось редактирование, и обновить страницу (Shift + Ctrl + R). После чего сохранение изменений должно выполниться без проблем.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Application Express и встроенный PL/SQL шлюз:&lt;/li&gt;&lt;br /&gt;Oracle Application Express в Oracle  11g будет использовать встроенный PL/SQL шлюз в качестве Web-сервера по умолчанию. Конфигурация с Oracle HTTP Server и modplsql будет по-прежнему поддерживаться. До выхода Oracle 11g Oracle Application Express со встроенным PL/SQL шлюзом является не поддерживаемой конфигурацией.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Возможность поворота только ASCII текста в Flash диаграммах:&lt;/li&gt;&lt;br /&gt;Flash диаграммы позволяют вращать только ASCII текст. Это является ограничением Flash, который способен поворачивать текст только используя встроенный шрифт. При попытке поворота не ASCII текста, последний не будет отображаться.&lt;br /&gt;&lt;br /&gt;Если диаграмма все таки содержит не ASCII символы, то есть несколько вариантов, чтобы избежать дублирования текста. Например, использовать горизонтальные, а не вертикальные, столбце диаграммы. Или использовать атрибут "Omit Label Interval ", чтобы сократить объем текста, выводимого на диаграмме. С другой стороны, можно увеличить общую площадь диаграммы, увеличив ее ширину и высоту.&lt;br /&gt;&lt;/ol&gt;С оригинальным текстом описания проблем APEX 3.0 можно ознакомиться на сайте &lt;a href="http://www.oracle.com/technology/products/database/application_express/html/3.0_fsps.html"&gt;OTN&lt;/a&gt;.&lt;br /&gt;Надеюсь, что дальше список расти не будет :).&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-0876573933122504";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-04-11: http://apex-dev.blogspot.com/
google_ad_channel = "6107414183";
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1045816305977712294-1103391263185310274?l=apex-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apex-dev.blogspot.com/feeds/1103391263185310274/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1045816305977712294&amp;postID=1103391263185310274' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/1103391263185310274'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/1103391263185310274'/><link rel='alternate' type='text/html' href='http://apex-dev.blogspot.com/2007/04/apex-30-faq.html' title='Наиболее часто встречающиеся проблемы в APEX 3.0 / FAQ'/><author><name>Timoshinin Evgeny</name><uri>http://www.blogger.com/profile/16019140023057398100</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1045816305977712294.post-4374090348188050620</id><published>2007-04-09T12:54:00.000+04:00</published><updated>2007-04-17T23:18:23.166+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='howto'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='apex'/><title type='text'>Apex. Создаем Master - Detail страницу.</title><content type='html'>Классическим примером для любого средства разработки интерфейса к БД является отражение связи "родитель-потомок" (Mater-Detail). Не будем нарушать традиций и попробуем реализовать данную функциональность в Oracle Application Express.&lt;br /&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;Для примера будем использовать системную таблицу - Object_Type. Суть приложения будет заключаться в том, чтобы в главной части формы выводить типы имеющихся в БД объектов, а в подчиненной - названия объектов выбранного типа.&lt;br /&gt;&lt;br /&gt;Для начала необходимо создать новое приложение. Для этого, выбрать "Application Builder -&gt; Create Application -&gt; Create Application" на главной странице Oracle Application Express:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_rOh27G9-PIg/RhoEAAQL-PI/AAAAAAAAAAM/yxSwAsp1xm4/s1600-h/1.GIF"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 278px; height: 183px;" src="http://bp3.blogger.com/_rOh27G9-PIg/RhoEAAQL-PI/AAAAAAAAAAM/yxSwAsp1xm4/s320/1.GIF" alt="" id="BLOGGER_PHOTO_ID_5051354330163837170" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Далее, указать название приложения ("MasterDetail"), выбрать новую модель ("From scratch") и название Oracle схемы:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_rOh27G9-PIg/RhoFCwQL-QI/AAAAAAAAAAU/J0ROm1L63gk/s1600-h/2.GIF"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 367px; height: 157px;" src="http://bp2.blogger.com/_rOh27G9-PIg/RhoFCwQL-QI/AAAAAAAAAAU/J0ROm1L63gk/s320/2.GIF" alt="" id="BLOGGER_PHOTO_ID_5051355476920105218" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Следующим шагом будет добавление новой (пустой) страницы в приложение. Назовем ее "Main":&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_rOh27G9-PIg/RhoGVgQL-RI/AAAAAAAAAAc/UapyQk8iVqQ/s1600-h/3.GIF"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_rOh27G9-PIg/RhoGVgQL-RI/AAAAAAAAAAc/UapyQk8iVqQ/s320/3.GIF" alt="" id="BLOGGER_PHOTO_ID_5051356898554280210" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;После этого, решаем, нужны ли закладки в приложении - не нужны:&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_rOh27G9-PIg/RhoH1QQL-SI/AAAAAAAAAAk/Uw3W2VORDGI/s1600-h/4.GIF"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_rOh27G9-PIg/RhoH1QQL-SI/AAAAAAAAAAk/Uw3W2VORDGI/s320/4.GIF" alt="" id="BLOGGER_PHOTO_ID_5051358543526754594" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;На следующем шаге мастера построения приложений, указываем, что никаких компонент из других приложений копировать не надо:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_rOh27G9-PIg/RhoIoAQL-TI/AAAAAAAAAAs/HLx9lyQ6D0k/s1600-h/5.GIF"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_rOh27G9-PIg/RhoIoAQL-TI/AAAAAAAAAAs/HLx9lyQ6D0k/s320/5.GIF" alt="" id="BLOGGER_PHOTO_ID_5051359415405115698" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Далее выбираем схему аутентификации пользователей. Так как приложение демонстрационное, то никаких ограничений не нужно:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_rOh27G9-PIg/RhoJRQQL-UI/AAAAAAAAAA0/b7NPdbLIjbY/s1600-h/6.GIF"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_rOh27G9-PIg/RhoJRQQL-UI/AAAAAAAAAA0/b7NPdbLIjbY/s320/6.GIF" alt="" id="BLOGGER_PHOTO_ID_5051360124074719554" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;На следующем шаге создания приложения выбираем схему оформления (выбрали 17ую схему) и на последнем шаге подтверждаем создание приложения.&lt;br /&gt;&lt;br /&gt;Следующим шагом в создании Master-Detail формы будет уже непосредственно редактирование графического интерфейса и добавление небольшой логики в приложение. Сразу после создания приложения, описание первой страницы выглядит следующим образом:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_rOh27G9-PIg/RhoK3QQL-VI/AAAAAAAAAA8/R3BTpqIuNC0/s1600-h/7.GIF"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_rOh27G9-PIg/RhoK3QQL-VI/AAAAAAAAAA8/R3BTpqIuNC0/s400/7.GIF" alt="" id="BLOGGER_PHOTO_ID_5051361876421376338" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Добавляем следующие элементы графического интерфейса на первую страницу:&lt;br /&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;Создаем регион, в котором будут выводиться все типы объектов, имеющиеся в схеме:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_rOh27G9-PIg/RhoN9wQL-WI/AAAAAAAAABE/YeXG6uXfkf8/s1600-h/8.GIF"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_rOh27G9-PIg/RhoN9wQL-WI/AAAAAAAAABE/YeXG6uXfkf8/s320/8.GIF" alt="" id="BLOGGER_PHOTO_ID_5051365286625409378" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Region type: "Report"&lt;/li&gt;&lt;li&gt;&lt;span class="fieldtitlebold"&gt;Report Implementation:&lt;/span&gt;&lt;span class="fielddata"&gt;   &lt;/span&gt;"&lt;span class="fielddata"&gt;SQL Report&lt;/span&gt;"&lt;/li&gt;&lt;li&gt;&lt;span class="fielddata"&gt;Title:                                                                     &lt;/span&gt;"&lt;span class="fielddata"&gt;Типы объектов&lt;/span&gt;"&lt;/li&gt;&lt;li&gt;&lt;span class="fieldtitlebold"&gt;Region Template:                          &lt;/span&gt;"&lt;span class="fieldtitlebold"&gt;Reports Region&lt;/span&gt;"&lt;/li&gt;&lt;li&gt;&lt;span class="fieldtitlebold"&gt;Display Point:                                        &lt;/span&gt;"&lt;span class="fieldtitlebold"&gt;Page Template Body (3. items above region content)&lt;/span&gt;"&lt;/li&gt;&lt;li&gt;&lt;span class="fieldtitlebold"&gt;Source:                              &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div style="text-align: center;"&gt;&lt;span class="fieldtitlebold"&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;       Select Object_Type, Count(*)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="fieldtitlebold"&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;                     From User_Objects&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="fieldtitlebold"&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt; Group By Object_Type&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;Добавляем невидимый элемент управления, который будет хранить название типа, для которого необходимо отразить объекты в подчиненной части страницы:&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_rOh27G9-PIg/RhoOiAQL-XI/AAAAAAAAABM/IA3iO82UHg8/s1600-h/9.GIF"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_rOh27G9-PIg/RhoOiAQL-XI/AAAAAAAAABM/IA3iO82UHg8/s320/9.GIF" alt="" id="BLOGGER_PHOTO_ID_5051365909395667314" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="fieldtitlebold"&gt;Item Type:        &lt;/span&gt;"&lt;span class="fieldtitlebold"&gt;Hidden&lt;/span&gt;"&lt;/li&gt;&lt;li&gt;&lt;span class="fieldtitlebold"&gt;Item Name:       &lt;/span&gt;"&lt;span class="fieldtitlebold"&gt;P1_TYPE&lt;/span&gt;"&lt;/li&gt;&lt;li&gt;&lt;span class="fieldtitlebold"&gt;Region:               &lt;/span&gt;"&lt;span class="fieldtitlebold"&gt;Типы объектов&lt;/span&gt;"&lt;/li&gt;&lt;li&gt;&lt;span class="fieldtitlebold"&gt;Item Source:     &lt;/span&gt;"&lt;span class="fieldtitlebold"&gt;- Not Computed -&lt;/span&gt;"&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;Создаем еще один регион, который будет выводить названия объектов, которые имеют заданный в главной части страницы тип. Указываем следующие атрибуты:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Region type:                                             "Report"&lt;/li&gt;&lt;li&gt;&lt;span class="fieldtitlebold"&gt;Report Implementation:&lt;/span&gt;&lt;span class="fielddata"&gt;   &lt;/span&gt;"&lt;span class="fielddata"&gt;SQL Report&lt;/span&gt;"&lt;/li&gt;&lt;li&gt;&lt;span class="fielddata"&gt;Title:                                    &lt;/span&gt;"&lt;span class="fielddata"&gt;Названия объектов&lt;/span&gt;"&lt;/li&gt;&lt;li&gt;&lt;span class="fieldtitlebold"&gt;Region Template:                          &lt;/span&gt;"&lt;span class="fieldtitlebold"&gt;Reports Region&lt;/span&gt;"&lt;/li&gt;&lt;li&gt;&lt;span class="fieldtitlebold"&gt;Display Point:                                        &lt;/span&gt;"&lt;span class="fieldtitlebold"&gt;Page Template Body (3. items above region content)&lt;/span&gt;"&lt;/li&gt;&lt;li&gt;&lt;span class="fieldtitlebold"&gt;Source:                              &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="fieldtitlebold"&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;              Select object_name, created, status&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="fieldtitlebold"&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;From User_Objects&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="fieldtitlebold"&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;          Where Object_Type = :&lt;/span&gt;&lt;/span&gt;&lt;span class="fieldtitlebold"&gt;P1_TYPE&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="fieldtitlebold"&gt;Condition Type:                  &lt;/span&gt;"&lt;span class="nodeLabelBox repTarget"&gt;&lt;span class="nodeText editable"&gt;Value of Item in Expression 1 Is Not NULL&lt;/span&gt;&lt;/span&gt;"&lt;/li&gt;&lt;li&gt;&lt;span class="fieldtitlebold"&gt;Expression 1: &lt;/span&gt;"&lt;span class="fieldtitlebold"&gt;P1_TYPE&lt;/span&gt;"&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;span class="fieldtitlebold"&gt;    Таким образом, на странице будут работать 2 отчета. Первый будет показывать все типы объектов схемы ("&lt;/span&gt;&lt;span class="fielddata"&gt;Типы объектов&lt;/span&gt;&lt;span class="fieldtitlebold"&gt;"). А второй ("&lt;/span&gt;&lt;span class="fielddata"&gt;Названия объектов&lt;/span&gt;&lt;span class="fieldtitlebold"&gt;")  будет показывать все объекты заданного типа. Кроме того, второй отчет будет виден  на странице только если есть значение в элементе &lt;/span&gt;&lt;span class="fieldtitlebold"&gt;P1_TYPE.&lt;br /&gt;&lt;br /&gt;И последний штрих - добавим небольшой функционал в главную часть страницы - отчет &lt;/span&gt;&lt;span class="fieldtitlebold"&gt;"&lt;/span&gt;&lt;span class="fielddata"&gt;Типы объектов&lt;/span&gt;&lt;span class="fieldtitlebold"&gt;": возможность выбора типа объекта. Для этого: переходим на страницу описания главного отчета:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_rOh27G9-PIg/Rho3ugQL-YI/AAAAAAAAABU/Er7_wx6u-Mo/s1600-h/10.GIF"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_rOh27G9-PIg/Rho3ugQL-YI/AAAAAAAAABU/Er7_wx6u-Mo/s320/10.GIF" alt="" id="BLOGGER_PHOTO_ID_5051411204120770946" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Далее переходим к описанию столбца "COUNT(*)":&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_rOh27G9-PIg/Rho8YAQL-cI/AAAAAAAAAB0/j38g2_vUSNE/s1600-h/11.GIF"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_rOh27G9-PIg/Rho8YAQL-cI/AAAAAAAAAB0/j38g2_vUSNE/s320/11.GIF" alt="" id="BLOGGER_PHOTO_ID_5051416315131853250" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;И в разделе "&lt;/span&gt;Column Link&lt;span class="fieldtitlebold"&gt;" выставляем следующие значения для "Link Text", "Page", "Item Name", "Item Value":&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_rOh27G9-PIg/Rho-iQQL-dI/AAAAAAAAAB8/XLKvFzFsbU0/s1600-h/12.GIF"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_rOh27G9-PIg/Rho-iQQL-dI/AAAAAAAAAB8/XLKvFzFsbU0/s320/12.GIF" alt="" id="BLOGGER_PHOTO_ID_5051418690248767954" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Вот и все! Итоговая master-detail страничка должны выглядеть следующим образом:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_rOh27G9-PIg/Rho7LQQL-bI/AAAAAAAAABs/qnQa_Ak1zTs/s1600-h/13.GIF"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_rOh27G9-PIg/Rho7LQQL-bI/AAAAAAAAABs/qnQa_Ak1zTs/s320/13.GIF" alt="" id="BLOGGER_PHOTO_ID_5051414996576893362" border="0" /&gt;&lt;/a&gt;Посмотреть приложение в работе можно на &lt;a href="http://apex.oracle.com/pls/otn/f?p=38134"&gt;apex.oracle.com&lt;/a&gt;.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-0876573933122504";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-04-11: http://apex-dev.blogspot.com/
google_ad_channel = "6107414183";
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1045816305977712294-4374090348188050620?l=apex-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apex-dev.blogspot.com/feeds/4374090348188050620/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1045816305977712294&amp;postID=4374090348188050620' title='Комментарии: 8'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/4374090348188050620'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/4374090348188050620'/><link rel='alternate' type='text/html' href='http://apex-dev.blogspot.com/2007/04/apex-mater-detail.html' title='Apex. Создаем Master - Detail страницу.'/><author><name>Timoshinin Evgeny</name><uri>http://www.blogger.com/profile/16019140023057398100</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_rOh27G9-PIg/RhoEAAQL-PI/AAAAAAAAAAM/yxSwAsp1xm4/s72-c/1.GIF' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1045816305977712294.post-2343051317926560643</id><published>2007-04-08T23:33:00.000+04:00</published><updated>2007-04-17T12:06:44.133+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='apex'/><title type='text'>Пробуем APEX без установки.</title><content type='html'>Благодаря успешной практике использования Live-CD, теперь каждый из нас имеет возможность по-ближе расмотреть и попробовать на деле понравившийся дистрибутив операционной системы без необходимости установки её на жесткий диск. Оказывается тоже самое можно сделать и с Oracle Application Express! &lt;span class="fullpost"&gt;&lt;br /&gt;Единственная разница - это лишь необходимость доступа в интернет в случае с APEX.&lt;br /&gt;Все, что необходимо сделать - это зайти на сайт &lt;a href="http://apex.oracle.com/"&gt;apex.oracle.com&lt;/a&gt; и зарегистрироваться там. Процесс регистрации состоит из следующих шагов:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;ввод имени, фамилии, адреса эл. почты&lt;/li&gt;&lt;li&gt;создания новой рабочей области (workspace). Необходимо лишь задать  уникальное название.&lt;/li&gt;&lt;li&gt;указать использование имеющейся схемы Oracle или использования новой схемы&lt;/li&gt;&lt;li&gt;если используется новая схема, то необходимо задать её имя и указать желаемый размер (на выбор: 2, 5 и 10 мегабайт)&lt;/li&gt;&lt;li&gt;если используется имеющаяся схема, то необходимо просто указать её имя&lt;/li&gt;&lt;li&gt;ввести причину, по которой решили завети себе учетную запись на apex.oracle.com (просто текст)&lt;/li&gt;&lt;li&gt;подтвердить свое желание :)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;    После всего этого, на указанный email придет письмо, где будет указаны все необходимые реквизиты для возможности входа на  &lt;a href="http://apex.oracle.com/"&gt;apex.oracle.com&lt;/a&gt; (Workspace, Username, Password).&lt;br /&gt;&lt;br /&gt;В результате вы получаете возможность полнофункциональной работы с APEX 3.0! Кроме этого, у вас появляется уникальная возможность демострации в сети своих APEX приложений без необходимости поиска какого-либо хостинга для них!&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-0876573933122504";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-04-11: http://apex-dev.blogspot.com/
google_ad_channel = "6107414183";
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1045816305977712294-2343051317926560643?l=apex-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apex-dev.blogspot.com/feeds/2343051317926560643/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1045816305977712294&amp;postID=2343051317926560643' title='Комментарии: 7'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/2343051317926560643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/2343051317926560643'/><link rel='alternate' type='text/html' href='http://apex-dev.blogspot.com/2007/04/apex.html' title='Пробуем APEX без установки.'/><author><name>Timoshinin Evgeny</name><uri>http://www.blogger.com/profile/16019140023057398100</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1045816305977712294.post-3517167392643821511</id><published>2007-03-31T12:33:00.000+04:00</published><updated>2007-03-31T13:08:34.843+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='apex'/><title type='text'>APEX. Документация по JavaScript</title><content type='html'>&lt;div style="text-align: justify;"&gt;Oracle Application Express для своих внутренних нужд (валидации, динамическое сокрытие элементов и т.д.) активно использует JavaScript. Для этих нужд был написан целый набор соответствующих API - некая обертка над стандартными функциями JavaScript. В ее существовании можно легко убедитсья просмотрев исходный код страницы, сгенерированной APEX.&lt;br /&gt;&lt;br /&gt;Наконец-то появилось хоть какое-то описание об этой обертке! Так, в своем блоге, Карл Бэкстром (&lt;a href="http://carlback.blogspot.com/index.html"&gt;Carl Backstrom&lt;/a&gt;) &lt;a href="http://carlback.blogspot.com/2007/03/apex-javascript-api-documentation.html"&gt;оповестил&lt;/a&gt; о старте приложения "&lt;a href="http://apex.oracle.com/pls/otn/f?p=38704:1"&gt;Javascript Functions&lt;/a&gt;" на apex.oracle.com, в рамках которого будут описываться все функции этой библиотеки. Перечислено 205 функций, но большинство из ниж пока без описания: есть только название. Но в некотрых случаях и этого достаточно, так как названия функций довольно информативные.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-0876573933122504";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-04-11: http://apex-dev.blogspot.com/
google_ad_channel = "6107414183";
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1045816305977712294-3517167392643821511?l=apex-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apex-dev.blogspot.com/feeds/3517167392643821511/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1045816305977712294&amp;postID=3517167392643821511' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/3517167392643821511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/3517167392643821511'/><link rel='alternate' type='text/html' href='http://apex-dev.blogspot.com/2007/03/apex-javascript.html' title='APEX. Документация по JavaScript'/><author><name>Timoshinin Evgeny</name><uri>http://www.blogger.com/profile/16019140023057398100</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1045816305977712294.post-8300043913358090199</id><published>2007-03-30T09:00:00.000+04:00</published><updated>2007-06-03T00:21:29.373+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='apex'/><category scheme='http://www.blogger.com/atom/ns#' term='translation'/><title type='text'>Архитектура Application Express</title><content type='html'>Что же такое Oracle Application Express и из чего он состоит?&lt;span class="fullpost"&gt;&lt;br /&gt;Oracle Application Express состоит из двух составляющих:&lt;br /&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;репозиторий метаданных, который хранит описание приложений (описание страниц, регионов, элементов управления и т.д.)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;"движок", которых отражает и обрабатывает страницы (отрисовывает страницы, проверяет введенные пользователем данные и т.д.)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;которые хранятся непосредственно в базе данных Oracle и , физически, состоят из набора таблиц и некоторого количества PL/SQL кода. При установке APEX создается отдельный Oracle пользователь/схема - FLOWS_&lt;версия_apex&gt;:&lt;br /&gt;&lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;APEX 2.2: FLOWS_020200&lt;br /&gt;&lt;/li&gt;&lt;li&gt;APEX 3.0: FLOWS_030000&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;В "обязанности" движка Application Express входят следующие функции:&lt;br /&gt;&lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;управление состоянием сессии&lt;/li&gt;&lt;li&gt;аутентификация&lt;/li&gt;&lt;li&gt;авторизация&lt;/li&gt;&lt;li&gt;управление страницами&lt;/li&gt;&lt;li&gt;обработка валидаций&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;Движок Application Express реализован на PL/SQL и доступен через web-браузер. Официально поддерживаемые браузеры:&lt;br /&gt;&lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;APEX 2.2:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Microsoft Internet Explorer 6.0 и выше&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Netscape Communicator 7.2 и выше&lt;/li&gt;&lt;li&gt;Mozilla 1.2 и выше&lt;/li&gt;&lt;li&gt;Mozilla 1.2 и выше&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;APEX 3.0:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Microsoft Internet Explorer 6.0 и выше&lt;/li&gt;&lt;li&gt;Firefox 1.0 и выше&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;Для доступа к приложениям/движку используется Oracle HTTP Server (Apache) и mod_plsql:&lt;br /&gt;&lt;br /&gt;&lt;img alt="Архитектура Oracle Application Express" src="http://www.oracle.com/technology/products/database/application_express/our_images/apex_arch.jpg" border="0" height="90" width="280" /&gt;&lt;br /&gt;&lt;br /&gt;Приложения "собираются" в режиме реального времени из репозитария метаданных. Создание новых или расширение имеющихся приложений не вызывает необходимости в дополнительном коде. Вместо этого, создаются новые или изменяются имеющиеся метаданные, хранимые в таблицах Oracle.&lt;br /&gt;&lt;br /&gt;Управление состоянием сессии выполняется асинхронно непосредственно в базе данных, что гарантирует:&lt;br /&gt;&lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;минимальное использование ресурсов CPU сервера&lt;/li&gt;&lt;li&gt;не использование Dedicated соединения&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;Кроме того, каждая страница выводит результаты в отдельной сессии базы данных, что минимизирует использование ресурсов, так как они необходимы только при "сборке" страницы из метаданных движком Application Express.&lt;br /&gt;&lt;br /&gt;Оригинал описания архитектуры Application Express взят с официальной &lt;a href="http://www.oracle.com/technology/products/database/application_express/html/apex_arch.html"&gt;странцы&lt;/a&gt;.&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-0876573933122504";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-04-11: http://apex-dev.blogspot.com/
google_ad_channel = "6107414183";
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1045816305977712294-8300043913358090199?l=apex-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apex-dev.blogspot.com/feeds/8300043913358090199/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1045816305977712294&amp;postID=8300043913358090199' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/8300043913358090199'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/8300043913358090199'/><link rel='alternate' type='text/html' href='http://apex-dev.blogspot.com/2007/03/application-express.html' title='Архитектура Application Express'/><author><name>Timoshinin Evgeny</name><uri>http://www.blogger.com/profile/16019140023057398100</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1045816305977712294.post-1503595026973581939</id><published>2007-03-27T17:04:00.000+04:00</published><updated>2007-04-17T12:09:28.338+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='app_version'/><category scheme='http://www.blogger.com/atom/ns#' term='apex'/><title type='text'>APEX и APP_VERSION - 2: исправляем ошибку</title><content type='html'>Как уже упоминалось &lt;a href="http://apex-dev.blogspot.com/2007/03/apex-appversion.html"&gt;ранее&lt;/a&gt;, в последней версии Application Express не была исправлена ошибка, связанная с форматом даты последнего изменения приложения. То есть, при выводе даты последнего изменения приложения невозможно получить формат даты, используемый в Европе (DD.MM.YYYY).&lt;br /&gt;   Чтобы исправить эту досадную ситуацию, как оказалось, необходимо лишь небольшого знания структуры APEX. &lt;span class="fullpost"&gt;А именно того, что дата последнего изменения приложения хранится в поле APEX_APPLICATIONS.LAST_UPDATED_ON (APEX_APPLICATIONS - это взгляд (view), который доступен всем Oracle пользователям).&lt;br /&gt;  Далее уже дело техники... Зная, что страница с номером "0" (&lt;a href="http://apex-dev.blogspot.com/2007/03/apex-page-0.html"&gt;page 0&lt;/a&gt;) будет отражаться на всех страницах приложения, необходимо создать ее.  Далее, добавляем на нее новый регион:&lt;br /&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;Type: "HTML"&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Subtype: "HTML"&lt;/li&gt;&lt;li&gt;Title: "Version"&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Region template: no template&lt;/li&gt;&lt;li&gt;Display point: After Header&lt;/li&gt;&lt;/ul&gt; &lt;div style="text-align: justify;"&gt;После чего добавляем в регион новый элемент управления:&lt;br /&gt;&lt;/div&gt; &lt;ul style="text-align: justify;"&gt;&lt;li&gt;Item type: "&lt;span class="fielddata"&gt;Display Only&lt;/span&gt;"&lt;/li&gt;&lt;li&gt;&lt;span class="fieldtitlebold"&gt;Pick Display Only Type: "&lt;/span&gt;&lt;span class="fielddata"&gt;Display as Text (does not save state)&lt;/span&gt;&lt;span class="fieldtitlebold"&gt;"&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="fieldtitlebold"&gt;Item Name: "P0_APP_VERSION"&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="fieldtitlebold"&gt;Region: "Version"&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="fieldtitlebold"&gt;Label: "Last update:"&lt;br /&gt;  &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="fieldtitlebold"&gt;Item Source: "SQL Query"&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="fieldtitlebold"&gt;Item Source Value:&lt;br /&gt;  &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt; &lt;div style="text-align: justify;"&gt;Select to_char(fl.LAST_UPDATED_ON, 'DD.MM.YYYY')&lt;br /&gt;From APEX_APPLICATIONS fl&lt;br /&gt;Where application_id = :APP_ID;&lt;br /&gt;&lt;br /&gt;Можно пойти дальше, и используя взгляд Apex_Application_Pages и переменные :APP_ID, :APP_PAGE_ID, иметь дату последнего изменения каждой страницы. Подход тот же, за исключением запроса для &lt;span class="fieldtitlebold"&gt;"P0_APP_VERSION":&lt;br /&gt;&lt;br /&gt;Select to_char(LAST_UPDATED_ON, 'DD.MON.YYYY')&lt;br /&gt;From Apex_Application_Pages&lt;br /&gt;Where application_id = :APP_ID&lt;br /&gt; And page_id = :APP_PAGE_ID&lt;br /&gt;&lt;br /&gt;&lt;/span&gt; &lt;/div&gt;Вот и все! Теперь дата изменения приложения будет выводиться в любом желаемом формате (вариации ограничены только фантазией и возможностями функции TO_CHAR)!&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-0876573933122504";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-04-11: http://apex-dev.blogspot.com/
google_ad_channel = "6107414183";
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1045816305977712294-1503595026973581939?l=apex-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apex-dev.blogspot.com/feeds/1503595026973581939/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1045816305977712294&amp;postID=1503595026973581939' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/1503595026973581939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/1503595026973581939'/><link rel='alternate' type='text/html' href='http://apex-dev.blogspot.com/2007/03/apex-appversion-2.html' title='APEX и APP_VERSION - 2: исправляем ошибку'/><author><name>Timoshinin Evgeny</name><uri>http://www.blogger.com/profile/16019140023057398100</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1045816305977712294.post-3711895300160316971</id><published>2007-03-27T14:32:00.000+04:00</published><updated>2007-04-17T12:10:55.822+04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='apex'/><title type='text'>APEX. Page 0</title><content type='html'>Зачастую в приложениях (в том числе и в APEX :) возникает необходимость отражать один и тот же набор элементов на нескольких страницах. Это может быть меню, какой-то заголовок, некое дерево, индикатор или что-то еще...&lt;br /&gt; Что же делать в такой ситуации? &lt;span class="fullpost"&gt;Не плодить же один и тот же код (Copy-Paste)? Выход есть - в приложениях Application Express необходимо использовать страницу с номером 0 ("page 0")!&lt;br /&gt; Нумерация страниц в APEX начинается с 1, но если обратить внимание на процесс создания страницы, то можно увидеть, что не смотря на то, что номер страницам присваивается автоматически, его можно редактировать. Соответственно, не составить никакого труда создать страницу с номером 0.&lt;br /&gt; Особенность этой страницы заключается в том, что ее содержимое включается в содержимое всех остальных страниц приложения. Таким образом, помещенные на эту страницу регионы и элементы управления, будут выводиться на всех страницах приложения. Используя атрибут "&lt;span class="fieldtitlebold"&gt;Condition Type&lt;/span&gt;" можно контролировать вывод того или иного элемента управления или целого региона в зависимости от некоторых условий (например, вывод только для определенных страниц приложения).&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-0876573933122504";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-04-11: http://apex-dev.blogspot.com/
google_ad_channel = "6107414183";
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1045816305977712294-3711895300160316971?l=apex-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apex-dev.blogspot.com/feeds/3711895300160316971/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1045816305977712294&amp;postID=3711895300160316971' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/3711895300160316971'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/3711895300160316971'/><link rel='alternate' type='text/html' href='http://apex-dev.blogspot.com/2007/03/apex-page-0.html' title='APEX. Page 0'/><author><name>Timoshinin Evgeny</name><uri>http://www.blogger.com/profile/16019140023057398100</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1045816305977712294.post-698387386983101515</id><published>2007-03-23T17:57:00.000+03:00</published><updated>2007-03-23T18:20:52.246+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='app_version'/><category scheme='http://www.blogger.com/atom/ns#' term='apex'/><title type='text'>APEX и APP_VERSION</title><content type='html'>&lt;div style="text-align: justify;"&gt;Как это не прискорбно, но в APEX 3.0 опять не поправили ошибку, связанную с форматом даты вывода в строке подстановке #APP_VERSION#.&lt;br /&gt;Эту строку можно использовать в шаблонах страниц. Apex сам будет подставлять вместо этой строки значение, которое было указано в атрибуте приложения - Version ( Application -&gt;Shared Components -&gt;Edit Application Definition ).&lt;br /&gt;&lt;br /&gt;Согласно &lt;a href="http://download-uk.oracle.com/docs/cd/B32472_01/doc/appdev.300/b32471/bldr.htm#CHDFBAFA"&gt;документации&lt;/a&gt;, если в этом атрибуте прописать формат даты, то вместо&lt;br /&gt;#APP_VERSION# будет подставляться дата последней модификации приложения. Поддерживается 3 формата: "YYYY.MM.DD", "MM.DD.YYYY", "DD.MM.YYYY". Однако, если первые два формата обрабатываются так, как нужно, то формат "DD.MM.YYYY" игнорируется и используется формат "MM.DD.YYYY".&lt;br /&gt;&lt;br /&gt;Жаль, так как судя по &lt;a href="http://forums.oracle.com/forums/thread.jspa?threadID=257660&amp;start=15&amp;amp;tstart=0"&gt;форуму&lt;/a&gt;, об этой проблеме знают уже как минимум год.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-0876573933122504";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-04-11: http://apex-dev.blogspot.com/
google_ad_channel = "6107414183";
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1045816305977712294-698387386983101515?l=apex-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apex-dev.blogspot.com/feeds/698387386983101515/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1045816305977712294&amp;postID=698387386983101515' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/698387386983101515'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/698387386983101515'/><link rel='alternate' type='text/html' href='http://apex-dev.blogspot.com/2007/03/apex-appversion.html' title='APEX и APP_VERSION'/><author><name>Timoshinin Evgeny</name><uri>http://www.blogger.com/profile/16019140023057398100</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1045816305977712294.post-3146219742527858563</id><published>2007-03-23T17:15:00.000+03:00</published><updated>2007-03-23T17:38:27.416+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='forms'/><category scheme='http://www.blogger.com/atom/ns#' term='apex'/><title type='text'>APEX - альтернатива Oracle Forms</title><content type='html'>До недавнего времени, альтернативой (приемником) Oracle Forms считался Oracle JDeveloper (вместе с Application Development  Framework - ADF).&lt;br /&gt;Но после выхода APEX 3.0 ситуация несколько изменилась: теперь Application Express так же рассматривается как альтернатива для Forms. Прямое доказательство можно обнаружить &lt;a href="http://www.oracle.com/technology/products/database/application_express/html/apex_for_forms.html"&gt;здесь&lt;/a&gt;, где выполняется небольшое сравнение архитектур этих средств разработки.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-0876573933122504";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-04-11: http://apex-dev.blogspot.com/
google_ad_channel = "6107414183";
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1045816305977712294-3146219742527858563?l=apex-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apex-dev.blogspot.com/feeds/3146219742527858563/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1045816305977712294&amp;postID=3146219742527858563' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/3146219742527858563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/3146219742527858563'/><link rel='alternate' type='text/html' href='http://apex-dev.blogspot.com/2007/03/apex-oracle-forms.html' title='APEX - альтернатива Oracle Forms'/><author><name>Timoshinin Evgeny</name><uri>http://www.blogger.com/profile/16019140023057398100</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1045816305977712294.post-6389852959496222092</id><published>2007-03-22T13:07:00.000+03:00</published><updated>2007-03-24T01:18:19.041+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='apex'/><title type='text'>APEX 3.0</title><content type='html'>Первый пост – и сразу хорошая новость: буквально на днях вышла новая версия Application Express! Очевидно, что смена версии с 2.2 на 3.0 должна означать значительные улучшения. Так и есть. Вот лишь часть из них:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;печать в pdf&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;flash графики&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;новые типы контролов&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;поддержка кэширования&lt;/p&gt;&lt;p&gt;и т.д.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Полный список улучшений можно посмотреть &lt;a href="http://www.oracle.com/technology/products/database/application_express/html/3.0_new_features.html"&gt;здесь&lt;/a&gt;.&lt;br /&gt;Скачать APEX 3.0 можно &lt;a href="http://www.oracle.com/technology/products/database/application_express/download.html"&gt;здесь&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-0876573933122504";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2007-04-11: http://apex-dev.blogspot.com/
google_ad_channel = "6107414183";
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1045816305977712294-6389852959496222092?l=apex-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apex-dev.blogspot.com/feeds/6389852959496222092/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1045816305977712294&amp;postID=6389852959496222092' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/6389852959496222092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045816305977712294/posts/default/6389852959496222092'/><link rel='alternate' type='text/html' href='http://apex-dev.blogspot.com/2007/03/apex-30.html' title='APEX 3.0'/><author><name>Timoshinin Evgeny</name><uri>http://www.blogger.com/profile/16019140023057398100</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
