<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
  xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

<title>Альберт Эйнштейнов: заметки с тегом oracle</title>
<link>http://depperte.ru/blog/tags/oracle/</link>
<description>Альберт Эйнштейнов</description>
<author></author>
<language>ru</language>
<generator>Aegea 11.3 (v4134)</generator>

<itunes:subtitle>Альберт Эйнштейнов</itunes:subtitle>
<itunes:image href="" />
<itunes:explicit></itunes:explicit>

<item>
<title>Поиск по всем исходным кодам в PL/SQL</title>
<guid isPermaLink="false">4</guid>
<link>http://depperte.ru/blog/all/poisk-po-vsem-ishodnym-kodam-v-pl-sql/</link>
<pubDate>Thu, 14 Apr 2016 13:26:55 +0500</pubDate>
<author></author>
<comments>http://depperte.ru/blog/all/poisk-po-vsem-ishodnym-kodam-v-pl-sql/</comments>
<description>
&lt;p&gt;Иногда необходимо проверить, а не используется ли та или иная процедура в какой-нибудь другой процедуре. Или, допустим, необходимо найти определенную подстроку сразу во всем объеме пользовательского кода на PL/SQL.&lt;/p&gt;
&lt;p&gt;Для это есть представление &lt;i&gt;all_source&lt;/i&gt;:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;SELECT * FROM all_source WHERE LOWER ( text ) LIKE  &amp;#039;%&amp;#039; || LOWER ( &amp;#039;p_get_nearest_objects&amp;#039; ) || &amp;#039;%&amp;#039;&lt;/code&gt;&lt;/pre&gt;</description>
</item>

<item>
<title>Изменение данных в гриде (GridView) в SharePoint в связке с БД Oracle</title>
<guid isPermaLink="false">10</guid>
<link>http://depperte.ru/blog/all/izmenenie-dannyh-v-gride-gridview-v-sharepoint-v-svyazke-s-bd-or/</link>
<pubDate>Thu, 02 Oct 2014 09:52:35 +0500</pubDate>
<author></author>
<comments>http://depperte.ru/blog/all/izmenenie-dannyh-v-gride-gridview-v-sharepoint-v-svyazke-s-bd-or/</comments>
<description>
&lt;p&gt;Есть SharePoint 2007, есть БД на Oracle.&lt;/p&gt;
&lt;p&gt;Выводим данные на странице с помощью asp:GridView, к базе данных подключаемся через asp:SqlDataSource.&lt;/p&gt;
&lt;p&gt;SqlDataSource:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;&amp;lt;asp:SqlDataSource
    runat=&amp;quot;server&amp;quot;
    id=&amp;quot;SqlDataSource1&amp;quot;
    ProviderName=&amp;quot;System.Data.OracleClient&amp;quot;
    ConnectionString=&amp;quot;Data Source=IP:PORT/SID;Persist Security Info=True;User ID=sharepoint;Password=sharepoint;Unicode=True&amp;quot;
    ConflictDetection=&amp;quot;OverwriteChanges&amp;quot;
    SelectCommand=&amp;quot;SELECT id, a, b, c FROM abc&amp;quot;
    UpdateCommand=&amp;quot;UPDATE abc SET a = :A, b = :B WHERE id = :ID&amp;quot;&amp;gt;
            
    &amp;lt;UpdateParameters&amp;gt;
        &amp;lt;asp:Parameter Name=&amp;quot;ID&amp;quot; Type=&amp;quot;Int32&amp;quot; /&amp;gt;
        &amp;lt;asp:Parameter Name=&amp;quot;A&amp;quot; Type=&amp;quot;DateTime&amp;quot; /&amp;gt;
        &amp;lt;asp:Parameter Name=&amp;quot;B&amp;quot; Type=&amp;quot;DateTime&amp;quot; /&amp;gt;
        &amp;lt;asp:Parameter Name=&amp;quot;C&amp;quot; Type=&amp;quot;String&amp;quot; /&amp;gt;
    &amp;lt;/UpdateParameters&amp;gt;
            
&amp;lt;/asp:SqlDataSource&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;GridView:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;&amp;lt;asp:GridView runat=&amp;quot;server&amp;quot; id=&amp;quot;GridView1&amp;quot; DataSourceID=&amp;quot;SqlDataSource1&amp;quot; AutoGenerateColumns=&amp;quot;false&amp;quot; DataKeyNames=&amp;quot;ID&amp;quot; AutoGenerateEditButton=&amp;quot;True&amp;quot;&amp;gt;
    &amp;lt;Columns&amp;gt;
        &amp;lt;asp:commandfield ShowDeleteButton=&amp;quot;True&amp;quot; ShowEditButton=&amp;quot;True&amp;quot; Visible=&amp;quot;false&amp;quot;&amp;gt;&amp;lt;/asp:commandfield&amp;gt;
        &amp;lt;asp:boundfield DataField=&amp;quot;ID&amp;quot; HeaderText=&amp;quot;ID&amp;quot; ReadOnly=&amp;quot;True&amp;quot; SortExpression=&amp;quot;ID&amp;quot; Visible=&amp;quot;False&amp;quot;&amp;gt;&amp;lt;/asp:boundfield&amp;gt;
        &amp;lt;asp:boundfield DataField=&amp;quot;A&amp;quot; DataFormatString=&amp;quot;{0:d}&amp;quot; HeaderText=&amp;quot;ACaption&amp;quot; SortExpression=&amp;quot;A&amp;quot;&amp;gt;&amp;lt;/asp:boundfield&amp;gt;
        &amp;lt;asp:boundfield DataField=&amp;quot;B&amp;quot; DataFormatString=&amp;quot;{0:d}&amp;quot; HeaderText=&amp;quot;BCaption&amp;quot; SortExpression=&amp;quot;B&amp;quot;&amp;gt;&amp;lt;/asp:boundfield&amp;gt;
        &amp;lt;asp:boundfield DataField=&amp;quot;C&amp;quot; HeaderText=&amp;quot;CCaption&amp;quot; SortExpression=&amp;quot;C&amp;quot;&amp;gt;&amp;lt;/asp:boundfield&amp;gt;
    &amp;lt;/Columns&amp;gt;

    &amp;lt;HeaderStyle ForeColor=&amp;quot;#FFFFFF&amp;quot; BackColor=&amp;quot;#666666&amp;quot; BorderColor=&amp;quot;#666666&amp;quot; /&amp;gt;
    &amp;lt;RowStyle CssClass=&amp;quot;light&amp;quot;/&amp;gt;
    &amp;lt;AlternatingRowStyle CssClass=&amp;quot;dark&amp;quot;/&amp;gt;    
&amp;lt;/asp:GridView&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Все работает прекрасно, пока не собираемся изменять данные в этом же гриде. При попытке изменить данные выдается ошибка ORA-01036: illegal variable name/number. Всякие вразумительные попытки ее побороть ни к чему не приводят.&lt;/p&gt;
&lt;p&gt;Оказывается, чтобы работал update необходимо, чтобы в тексте UpdateCommand участвовали все те же столбцы, что и в SelectCommand. Если будет не хватать хотя бы одного столбца — запрос не проходит. Соответственно, изменения претерпевает только текст UpdateCommand в SqlDataSource. И все начинает работать.&lt;/p&gt;
&lt;p&gt;Было так:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;UPDATE abc SET a = :A, b = :B WHERE id = :ID&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Нужно так:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;UPDATE abc SET a = :A, b = :B, c = :C WHERE id = :ID&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Как изменить такое поведение — непонятно.&lt;/p&gt;
</description>
</item>

<item>
<title>Смена пути к Java в Oracle SQL Developer 4.0</title>
<guid isPermaLink="false">11</guid>
<link>http://depperte.ru/blog/all/smena-puti-k-java-v-oracle-sql-developer-4-0/</link>
<pubDate>Fri, 19 Sep 2014 07:36:36 +0500</pubDate>
<author></author>
<comments>http://depperte.ru/blog/all/smena-puti-k-java-v-oracle-sql-developer-4-0/</comments>
<description>
&lt;p&gt;Последние версии Oracle SQL Developer (4.0 и далее) требуют минимум JDK 7. Чтобы явно указать SQL Developer где находится JDK необходимо указать этот путь в конфигурационном файле product.conf (параметр SetJavaHome):&lt;/p&gt;
&lt;p&gt;Для Windows XP: «C:\Documents and Settings\Application Data\sqldeveloper\1.0.0.0.0»&lt;br /&gt;
Для Vista и выше: «C:\Users\AppData\Roaming\sqldeveloper\1.0.0.0.0\»&lt;/p&gt;
</description>
</item>

<item>
<title>Первый и последний день месяца в PL/SQL</title>
<guid isPermaLink="false">13</guid>
<link>http://depperte.ru/blog/all/pervy-i-posledniy-den-mesyaca-v-pl-sql/</link>
<pubDate>Tue, 13 May 2014 15:47:09 +0500</pubDate>
<author></author>
<comments>http://depperte.ru/blog/all/pervy-i-posledniy-den-mesyaca-v-pl-sql/</comments>
<description>
&lt;p&gt;Недавно наткнулся на необходимость написать запрос на PL/SQL, который выводил бы все записи за текущий месяц, причем захватываю пару дней до начала месяца и пару дней после его окончания. Например, с 29.04 по 02.06.&lt;/p&gt;
&lt;p&gt;Оказалось, что в PL/SQL есть функция LAST_DAY ( DATE ). Она выдает последний день месяца переданной ей даты. Но почему-то нет функции FIRST_DAY ( DATE ) — получения первого дня месяца. Ее роль выполняет вот такое выражение:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;TO_DATE ( TRUNC ( DATE, &amp;#039;MM&amp;#039; ), &amp;#039;DD.MM.YYYY&amp;#039; )&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Казалось бы, почему не сделать функцию FIRST_DAY?&lt;/p&gt;
&lt;p&gt;В итоге:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;первый день месяца: TO_DATE ( TRUNC ( DATE, ’MM’ ), ’DD.MM.YYYY’ );&lt;/li&gt;
&lt;li&gt;последний день месяца: LAST_DAY ( DATE ).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;А условие запроса с двумя днями соответственно выглядит вот так:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;...AND a.request_date BETWEEN ( TO_DATE ( TRUNC ( SYSDATE, &amp;#039;MM&amp;#039; ), &amp;#039;DD.MM.YYYY&amp;#039; ) - 2 ) AND ( LAST_DAY ( SYSDATE ) + 2 )&lt;/code&gt;&lt;/pre&gt;</description>
</item>

<item>
<title>Изменение способа хранения BLOB-поля в уже существующей таблице Oracle</title>
<guid isPermaLink="false">16</guid>
<link>http://depperte.ru/blog/all/izmenenie-sposoba-hraneniya-blob-polya-v-uzhe-suschestvuyuschey/</link>
<pubDate>Sun, 02 Feb 2014 22:30:38 +0500</pubDate>
<author></author>
<comments>http://depperte.ru/blog/all/izmenenie-sposoba-hraneniya-blob-polya-v-uzhe-suschestvuyuschey/</comments>
<description>
&lt;p&gt;Долго не мог найти способ изменить способ организации BLOB-поля на формат SecureFile в Oracle. Обходился всегда копированием таблицы.&lt;/p&gt;
&lt;p&gt;Теперь вот нашел. Заодно задаем дополнительные опции хранения, такие как дедупликация, сжатие и кэширование.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;ALTER TABLE ss_file_t3d MOVE LOB ( preview_summary ) STORE AS SECUREFILE ( TABLESPACE seis_blob DEDUPLICATE COMPRESS CACHE );&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Красота!&lt;/p&gt;
</description>
</item>


</channel>
</rss>