<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Net i Ja &#187; Oracle</title>
	<atom:link href="http://netija.pl/wpis/tag/oracle/feed" rel="self" type="application/rss+xml" />
	<link>http://netija.pl</link>
	<description>Blog pewnego studenta informatyki ;)</description>
	<lastBuildDate>Sun, 11 Mar 2012 13:10:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Hash table w Oraclu</title>
		<link>http://netija.pl/wpis/185</link>
		<comments>http://netija.pl/wpis/185#comments</comments>
		<pubDate>Wed, 23 Mar 2011 12:34:26 +0000</pubDate>
		<dc:creator>Marek</dc:creator>
				<category><![CDATA[Bazy Danych]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[PL/SQL]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://netija.pl/?p=185</guid>
		<description><![CDATA[Problem prosty, rozwiązanie równie przejrzyste. A wszystko dzięki PL/SQL-owi. Tak wygląda przykładowa deklaracja tabeli: Użycie tabeli hashowej:]]></description>
			<content:encoded><![CDATA[<p>Problem prosty, rozwiązanie równie przejrzyste. A wszystko dzięki PL/SQL-owi.</p>
<p>Tak wygląda przykładowa deklaracja tabeli:</p>
<pre class="brush: sql; title: ; notranslate">

subtype tvalue is varchar2(1000);
 type thash is table of tvalue index by varchar2;
 hashtab thash;
</pre>
<p>Użycie tabeli hashowej:</p>
<pre class="brush: sql; title: ; notranslate">hashtab(klucz) :=wartosc;</pre>
]]></content:encoded>
			<wfw:commentRss>http://netija.pl/wpis/185/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>&#8222;ORA-12838: cannot read/modify an object after modifying it in parallel&#8221;</title>
		<link>http://netija.pl/wpis/182</link>
		<comments>http://netija.pl/wpis/182#comments</comments>
		<pubDate>Tue, 15 Feb 2011 09:13:11 +0000</pubDate>
		<dc:creator>Marek</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[kod]]></category>
		<category><![CDATA[select]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://netija.pl/?p=182</guid>
		<description><![CDATA[Niby prosty insert na podstawie selekta: A w efekcie można uzyskać brzydki błąd. Jego rozwiązanie jest dość banalne. Wystarczy zapytanie zakomitować:]]></description>
			<content:encoded><![CDATA[<p>Niby prosty insert na podstawie selekta:</p>
<pre class="brush: plain; title: ; notranslate">

INSERT /*+ APPEND */ SELECT * FROM test;
</pre>
<p>A w efekcie można uzyskać brzydki błąd. Jego rozwiązanie jest dość banalne.</p>
<p>Wystarczy zapytanie zakomitować:</p>
<pre class="brush: plain; title: ; notranslate">

COMMIT;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://netija.pl/wpis/182/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>create table as select where rownum, czyli o tworzeniu kopi tabeli z ograniczeniami</title>
		<link>http://netija.pl/wpis/169</link>
		<comments>http://netija.pl/wpis/169#comments</comments>
		<pubDate>Thu, 21 Oct 2010 06:32:30 +0000</pubDate>
		<dc:creator>Marek</dc:creator>
				<category><![CDATA[Bazy Danych]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[create table]]></category>
		<category><![CDATA[kod]]></category>
		<category><![CDATA[PL/SQL]]></category>
		<category><![CDATA[rownum]]></category>

		<guid isPermaLink="false">http://netija.pl/?p=169</guid>
		<description><![CDATA[Czasem w czasie procesu testowania stworzonych procedur lub większych zapytań sql pojawia się potrzeba częstego ich testowania. Jednak często oryginalne dane, które mamy przetwarzać są zbyt duże by testy przeprowadzać w trakcie powstawania kodu. Dobrym rozwiązaniem tego problemu jest stworzenie kopi tabel z małą próbką testową orginalnych danych. Kod stworzenia kopi tabeli, gdzie n jest [...]]]></description>
			<content:encoded><![CDATA[<p>Czasem w czasie procesu testowania stworzonych procedur lub większych zapytań sql pojawia się potrzeba częstego ich testowania. Jednak często oryginalne dane, które mamy przetwarzać są zbyt duże by testy przeprowadzać w trakcie powstawania kodu. Dobrym rozwiązaniem tego problemu jest stworzenie kopi tabel z małą próbką testową orginalnych danych.</p>
<p>Kod stworzenia kopi tabeli, gdzie <strong>n</strong> jest zadaną ilością wierszy kopiowanych:</p>
<pre class="brush: sql; title: ; notranslate">

create table tablica_kopia as
 select * from tablica_orginalna
 where rownum &lt;=n;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://netija.pl/wpis/169/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Select random, czyli jak wyciagnać z tabeli losowe rekordy</title>
		<link>http://netija.pl/wpis/167</link>
		<comments>http://netija.pl/wpis/167#comments</comments>
		<pubDate>Sat, 16 Oct 2010 08:57:47 +0000</pubDate>
		<dc:creator>Marek</dc:creator>
				<category><![CDATA[Bazy Danych]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[dbms_random]]></category>
		<category><![CDATA[random]]></category>
		<category><![CDATA[select]]></category>

		<guid isPermaLink="false">http://netija.pl/?p=167</guid>
		<description><![CDATA[Miałem problem jak wyciągnąć kilka tysięcy losowych rekordów z dość sporej tablicy i zapragnąłem znaleźć rozwiązanie w jednym zapytaniu do bazy danych. Oczywiście dzięki bibliotekom udostępnianym przez Oracle takie rozwiązanie jest możliwe. Skorzystałem z pomocy pakietu dbms_random. A oto kod gotowego zapytania wyciągającego n losowych rekordów z zadanej tabeli:]]></description>
			<content:encoded><![CDATA[<p>Miałem problem jak wyciągnąć kilka tysięcy losowych rekordów z dość sporej tablicy i zapragnąłem znaleźć rozwiązanie w jednym zapytaniu do bazy danych. Oczywiście dzięki bibliotekom udostępnianym przez Oracle takie rozwiązanie jest możliwe. Skorzystałem z pomocy pakietu dbms_random.</p>
<p>A oto kod gotowego zapytania wyciągającego n losowych rekordów z zadanej tabeli:</p>
<pre class="brush: sql; title: ; notranslate">

select * from table_name where row_id in (
select row_id from(
select row_id, dbms_random.value  from table_name order by 2)
where rownum&lt;=n);
</pre>
]]></content:encoded>
			<wfw:commentRss>http://netija.pl/wpis/167/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>&#8222;ORA-06553: PLS-382: expression is of wrong type&#8221; i tablica dual</title>
		<link>http://netija.pl/wpis/125</link>
		<comments>http://netija.pl/wpis/125#comments</comments>
		<pubDate>Wed, 05 May 2010 08:17:50 +0000</pubDate>
		<dc:creator>Marek</dc:creator>
				<category><![CDATA[Bazy Danych]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[kod]]></category>
		<category><![CDATA[PL/SQL]]></category>

		<guid isPermaLink="false">http://netija.pl/?p=125</guid>
		<description><![CDATA[Kilka dni temu zacząłem się trochę więcej bawić z bazą danych Oracle i od razu napotkałem klika niespodzianek Oto jedna z nich. Pisałem funkcje składowaną, która po wykonaniu jakiś zapytań na bazie i sprawdzeniu kilku warunków miała zwrócić true lube false, a z racji że PL/SQL udostępnia cudowny typ BOOLEAN to zapragnąłem własnie z niego [...]]]></description>
			<content:encoded><![CDATA[<p>Kilka dni temu zacząłem się trochę więcej bawić z bazą danych Oracle i od razu napotkałem klika niespodzianek <img src='http://netija.pl/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  Oto jedna z nich. Pisałem funkcje składowaną, która po wykonaniu jakiś zapytań na bazie i sprawdzeniu kilku warunków miała zwrócić true lube false, a z racji że PL/SQL udostępnia cudowny typ BOOLEAN to zapragnąłem własnie z niego skorzystać.</p>
<pre class="brush: sql; title: ; notranslate">

create or replace function czy_spelnione_wymagania(
 pesel IN varchar2,
 temat IN varchar2)
 return boolean
 is

....
</pre>
<p>Funkcja się skompilowała poprawnie, więc cały szczęśliwy chciałem ją przetestować korzystając z zabawnej tablicy DUAL.</p>
<pre class="brush: sql; title: ; notranslate">

SELECT czy_spelnione_wymagania('8089123243','Oaza Nowego Zycia 1') FROM DUAL;
</pre>
<p>I tu mnie spotkało niemiłe zaskoczenie:</p>
<pre class="brush: plain; title: ; notranslate">

ORA-06552: PL/SQL: Statement ignored
ORA-06553: PLS-382: expression is of wrong type
</pre>
<p>Zasięgnąłem informacji o błędzie i byłem dość  zaskoczony tym co było przyczyną. A mianowicie poczciwy SQL nie obsługuje udostępnianego przez PL/SQL typu BOOLEAN! Więc trzeba to obejść jakoś ładnie i poniżej przedstawiam moją propozycje rozwiązania tego problemu za pomocą bloku PL/SQL.</p>
<pre class="brush: sql; title: ; notranslate">

DECLARE
VAR_BOOL BOOLEAN;
BEGIN
VAR_BOOL :=czy_spelnione_wymagania();
IF( VAR_BOOL = TRUE ) THEN
DBMS_OUTPUT.PUT_LINE( ‘TRUE’ );
END IF;
END;
</pre>
<p>Tak więc nie jesteśmy zmuszeniu do modyfikacji formatu zwracanych danych przez naszą funkcje składowaną, ale oczywiście jak ktoś bardzo lubi to może sobie przyjąć, że będzie zwracał int, gdzie FALSE = 0 a TRUE = 1.</p>
]]></content:encoded>
			<wfw:commentRss>http://netija.pl/wpis/125/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

