<?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; PL/SQL</title>
	<atom:link href="http://netija.pl/wpis/tag/plsql/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>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>&#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>

