<?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; Bazy Danych</title>
	<atom:link href="http://netija.pl/wpis/category/bazy-danych/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>MySQL + PHP = problem z kodowaniem</title>
		<link>http://netija.pl/wpis/172</link>
		<comments>http://netija.pl/wpis/172#comments</comments>
		<pubDate>Tue, 02 Nov 2010 12:49:54 +0000</pubDate>
		<dc:creator>Marek</dc:creator>
				<category><![CDATA[Bazy Danych]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[kodowanie]]></category>
		<category><![CDATA[konfiguracja]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://netija.pl/?p=172</guid>
		<description><![CDATA[Mam plik zakodowany w UTF8 i bazę danych w MySQL która ma ustawione kodowanie tabel na utf8_polish_ci. Z pomocą php chcę ją wypełnić. Niestety mimo wielu prób otrzymywałem zamiast polskich liter krzaki&#8230; Rozwiązaniem by po nawiązaniu połączenia zadeklarowanie używanego kodowania, w taki sposób:]]></description>
			<content:encoded><![CDATA[<p>Mam plik zakodowany w UTF8 i bazę danych w MySQL która ma ustawione kodowanie tabel na utf8_polish_ci. Z pomocą php chcę ją wypełnić. Niestety mimo wielu prób otrzymywałem zamiast polskich liter krzaki&#8230;</p>
<p>Rozwiązaniem by po nawiązaniu połączenia zadeklarowanie używanego kodowania, w taki sposób:</p>
<pre class="brush: php; title: ; notranslate">

$dbh-&gt;query('SET NAMES &quot;utf8&quot;');
</pre>
]]></content:encoded>
			<wfw:commentRss>http://netija.pl/wpis/172/feed</wfw:commentRss>
		<slash:comments>1</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>Odinstalowywanie Oracle 11g z Windowsa</title>
		<link>http://netija.pl/wpis/156</link>
		<comments>http://netija.pl/wpis/156#comments</comments>
		<pubDate>Sat, 02 Oct 2010 14:31:14 +0000</pubDate>
		<dc:creator>Marek</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[administracja systemem]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[uninstall Oracle]]></category>

		<guid isPermaLink="false">http://netija.pl/?p=156</guid>
		<description><![CDATA[Wbrew pozorom nie jest takie banalne zadanie. Pierwszym krokiem w takim momencie jest wyłączenie bazy. Wystarczy zalogować się do bazy za pomocą sqlplus jako sysdba i wydać polecenie natychmiastowego zamknięcia bazy: Następnie wielu skieruje swoje kroki do narzędzia firmy Oracle zwanego Universal Installer. Jednak jego uruchomienie i próba odinstalowania całej bazy za jego pomocą skończy [...]]]></description>
			<content:encoded><![CDATA[<p>Wbrew pozorom nie jest takie banalne zadanie. Pierwszym krokiem w takim momencie jest wyłączenie bazy. Wystarczy zalogować się do bazy za pomocą sqlplus jako sysdba i wydać polecenie natychmiastowego zamknięcia bazy:</p>
<pre class="brush: plain; title: ; notranslate">shutdown immediate</pre>
<p>Następnie wielu skieruje swoje kroki do narzędzia firmy Oracle zwanego Universal Installer. Jednak jego uruchomienie i próba odinstalowania całej bazy za jego pomocą skończy się komunikatem z prośbą o zastosowanie innego narzędzia wywoływanego z linik komend. Narzędzie to uruchomimy poleceniem:</p>
<pre class="brush: plain; title: ; notranslate">C:\ORACLE11g\product\11.2.0\dbhome_1\deinstall&gt;deinstall.bat</pre>
<p>Proces deinstalacji bazy Oracle rozpoczyna się od odpowiedzenia na kilka pytań o dokładne szczegóły np. jaką instancje usunąć. Na końcu powinniśmy zobaczyć podobny ekran do poniższego, zawierającego informacje podsumowujące wykonanego zadania, oraz ewentualne napotkane błędy.</p>
<p style="text-align: center;"><a rel="attachment wp-att-160" href="http://netija.pl/wpis/156/oracle_deinstall"><img class="aligncenter size-full wp-image-160" title="oracle_deinstall" src="http://netija.pl/wp-content/uploads/2010/10/oracle_deinstall.jpg" alt="" width="467" height="291" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://netija.pl/wpis/156/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Problem z kodowaniem znaków podczas przenoszenia bazy?</title>
		<link>http://netija.pl/wpis/152</link>
		<comments>http://netija.pl/wpis/152#comments</comments>
		<pubDate>Tue, 17 Aug 2010 12:01:22 +0000</pubDate>
		<dc:creator>Marek</dc:creator>
				<category><![CDATA[Bazy Danych]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[mysqldump]]></category>

		<guid isPermaLink="false">http://netija.pl/?p=152</guid>
		<description><![CDATA[W wypadku gdy do tego celu będziemy wykorzystywać phpMyAdmin jesteśmy narażeni na tego typu problemy.Wynika to między innymi z ustawień kodowania połączenia między aplikacja a serwerem bazy. Jest jednak rozwiązanie, które ograniczy nam sporo cierpienia mimo, iż na początku może odstraszać wielbicieli webowego interfejsu phpMyAdmin. Myślę tu o wbudowanych narzędziach bazy MySQL o nazwie mysqldump [...]]]></description>
			<content:encoded><![CDATA[<p>W wypadku gdy do tego celu będziemy wykorzystywać phpMyAdmin jesteśmy narażeni na tego typu problemy.Wynika to między innymi z ustawień kodowania połączenia między aplikacja a serwerem bazy.</p>
<p>Jest jednak rozwiązanie, które ograniczy nam sporo cierpienia mimo, iż na początku może odstraszać wielbicieli webowego interfejsu phpMyAdmin. Myślę tu o wbudowanych narzędziach bazy MySQL o nazwie mysqldump oraz mysql. Obsługa ich odbywa się za pomocą konsoli systemowej.</p>
<p>Gdy chcemy eksportować z bazy danych:</p>
<pre class="brush: plain; title: ; notranslate">mysqldump --user=XXXXXXXX --password=XXXXXXX --databases DB_NAME1 DB_NAME2 DB_NAME3 &gt; /PATH/TO/DUMPFILE.SQL</pre>
<p>Gdy chcemy importować do bazy danych:</p>
<pre class="brush: plain; title: ; notranslate">mysql --verbose --user=XXXXXXXX --password=XXXXXXXX DB_NAME &lt; /PATH/TO/DUMPFILE.SQL</pre>
]]></content:encoded>
			<wfw:commentRss>http://netija.pl/wpis/152/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>

