<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="hu">
	<id>https://vik.wiki/index.php?action=history&amp;feed=atom&amp;title=Adatb%C3%A1zisok_szerver_oldali_programoz%C3%A1sa_El%C5%91ad%C3%A1s%2C_2006.03.03.</id>
	<title>Adatbázisok szerver oldali programozása Előadás, 2006.03.03. - Laptörténet</title>
	<link rel="self" type="application/atom+xml" href="https://vik.wiki/index.php?action=history&amp;feed=atom&amp;title=Adatb%C3%A1zisok_szerver_oldali_programoz%C3%A1sa_El%C5%91ad%C3%A1s%2C_2006.03.03."/>
	<link rel="alternate" type="text/html" href="https://vik.wiki/index.php?title=Adatb%C3%A1zisok_szerver_oldali_programoz%C3%A1sa_El%C5%91ad%C3%A1s,_2006.03.03.&amp;action=history"/>
	<updated>2026-05-16T18:02:03Z</updated>
	<subtitle>Az oldal laptörténete a wikiben</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://vik.wiki/index.php?title=Adatb%C3%A1zisok_szerver_oldali_programoz%C3%A1sa_El%C5%91ad%C3%A1s,_2006.03.03.&amp;diff=163816&amp;oldid=prev</id>
		<title>2001:738:2001:2078:0:208:37:0: Új oldal, tartalma: „{{GlobalTemplate|Valaszthato|AdatbServerProgJegyzet20060303}}  &lt;!--  * Set DENYTOPICVIEW = TWikiGuest --&gt;   &lt;style&gt;  	code.pre { white-space: pre; display:block; me…”</title>
		<link rel="alternate" type="text/html" href="https://vik.wiki/index.php?title=Adatb%C3%A1zisok_szerver_oldali_programoz%C3%A1sa_El%C5%91ad%C3%A1s,_2006.03.03.&amp;diff=163816&amp;oldid=prev"/>
		<updated>2013-03-31T19:02:57Z</updated>

		<summary type="html">&lt;p&gt;Új oldal, tartalma: „{{GlobalTemplate|Valaszthato|AdatbServerProgJegyzet20060303}}  &amp;lt;!--  * Set DENYTOPICVIEW = &lt;a href=&quot;/index.php?title=TWikiGuest&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;TWikiGuest (a lap nem létezik)&quot;&gt;TWikiGuest&lt;/a&gt; --&amp;gt;   &amp;lt;style&amp;gt;  	code.pre { white-space: pre; display:block; me…”&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Új lap&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{GlobalTemplate|Valaszthato|AdatbServerProgJegyzet20060303}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
* Set DENYTOPICVIEW = [[TWikiGuest]]&lt;br /&gt;
--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;style&amp;gt; &lt;br /&gt;
	code.pre { white-space: pre; display:block; mergin-top: 2px; margin-bottom: 2px;}&lt;br /&gt;
	li { line-height: 18px; }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt; [[AdatbServerProgJegyzet20060224|&amp;amp;lt;&amp;amp;lt;]] Előadás, 2006.03.03. [[AdatbServerProgJegyzet20060307|&amp;amp;gt;&amp;amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Adattípusok==&lt;br /&gt;
&lt;br /&gt;
===Típusok osztályozása===&lt;br /&gt;
* változó / konstans / oszlop / összetett&lt;br /&gt;
* skalár / összetett&lt;br /&gt;
* beépitett / programozó által definiált&lt;br /&gt;
&lt;br /&gt;
===Skalár típusok===&lt;br /&gt;
* =NUMBER(p,s)=: fixpontos szám. p=hossz, s=tizedesjegyek száma. Ha s=0, egészet tárol.&lt;br /&gt;
* =CHAR(hossz [CHAR|BYTE])=: fix hosszú karakterláncot tárol. A hossz alapérteke 1, legfeljebb 32767 lehet. Táblában maximum 2000 hosszú karakterlánc tárolható. Ha rövidebb karakterláncot szúrunk be, a maradék helyeket automatikusan feltölti szóközökkel, ha hosszabbat, =VALUE_ERROR= exceptiont kapunk. A =CHAR= módositó segítségével unicode karakterek tárolhatók, BYTE esetén 1 karakter 1 byte hosszú.&lt;br /&gt;
* =VARCHAR2(hossz [CHAR|BYTE])=: változo hosszú karakterlánc. Ugyanazok a korlátozások érvényesek rá, mint a &amp;lt;pre&amp;gt;CHAR&amp;lt;/pre&amp;gt;-ra. Ha a hossz paraméter legfeljebb 2000, akkor a memóriában a maximális hosszt foglalja le, különben csak a string aktuális hosszát.&amp;lt;code class=&amp;quot;pre&amp;quot;&amp;gt;DECLARE&lt;br /&gt;
&amp;lt;br/&amp;gt;	a VARCHAR2(1500);&lt;br /&gt;
&amp;lt;br/&amp;gt;	b VARCHAR(3000);&lt;br /&gt;
&amp;lt;br/&amp;gt;BEGIN&lt;br /&gt;
&amp;lt;br/&amp;gt;	a:=&amp;#039;abcde&amp;#039;;	-- 1500 byte&lt;br /&gt;
&amp;lt;br/&amp;gt;	b:=&amp;#039;abcde&amp;#039;;	-- 5 byte&lt;br /&gt;
&amp;lt;br/&amp;gt;END;&amp;lt;/code&amp;gt;&lt;br /&gt;
* =NCHAR2=, =NVARCHAR2=: ugyanazt tudja, mint az előző két típus, csak unicode karaktereket tárol.&lt;br /&gt;
* =LONG=: &amp;gt;2000 hosszú karaktersorozatot is tud tárolni&lt;br /&gt;
* =DATE=: dátumot és időt tárol&lt;br /&gt;
* =BOOLEAN=: értékkészlete: ={TRUE, FALSE, NULL}=. Nem lehet oszlop típusa.&lt;br /&gt;
* =BINARY INTEGER=: -2^31+1 és 2^31-1 közötti egész&lt;br /&gt;
* =PLS_INTEGER=: ugyanez, csak hardver aritmetikát használ&lt;br /&gt;
* =LOB=: Large Object, legfeljebb 4 GB méretű. Típusai:&lt;br /&gt;
** =BFILE=: bináris file, az operációs rendszer filerendszerében tárolódik. Az adatbázis csak hivatkozást tartalmaz. Nem backupolódik automatikusan az adatbázissal.&lt;br /&gt;
** =BLOB=: adatbázison belül tárolódik, backupolódik.&lt;br /&gt;
** =CLOB=: mint a =BLOB=, csak karaktereket tartalmaz.&lt;br /&gt;
&lt;br /&gt;
===Altípusok===&lt;br /&gt;
&lt;br /&gt;
Altípus = alaptípus + megszorítás&lt;br /&gt;
&lt;br /&gt;
* =BINARY_INTEGER= altípusok&lt;br /&gt;
** =NATURAL= &amp;amp;isin; {0..2^31-1, NULL}&lt;br /&gt;
** =NATURALN= &amp;amp;isin; {0..2^31-1}&lt;br /&gt;
** =POSITIVE= &amp;amp;isin; {1..2^31-1, NULL}&lt;br /&gt;
** =POSITIVEN= &amp;amp;isin; {1..2^31-1}&lt;br /&gt;
** =SIGNTYPE= &amp;amp;isin; {-1, 0, 1}&lt;br /&gt;
* =NUMBER= altípusok&lt;br /&gt;
** =DEC=, =DECIMAL=, =NUMERIC=: fixpontos&lt;br /&gt;
** =FLOAT=, =DOUBLE PRECISION=, =REAL=: lebegőpontos&lt;br /&gt;
** =INTEGER=, =INT=, =SMALLINT=: egész&lt;br /&gt;
* =VARCHAR2= altípusok&lt;br /&gt;
** =STRING=, =VARCHAR= (csak alias)&lt;br /&gt;
&lt;br /&gt;
===Programozó által definiált típusok===&lt;br /&gt;
&lt;br /&gt;
Előre definiált típusok + megkötések.&lt;br /&gt;
&lt;br /&gt;
=SUBTYPE típusnév IS alaptípus [(megkötés)] [NOT NULL]= &lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Csak a hosszra adható megkötés, értékkészletre nem.&lt;br /&gt;
&lt;br /&gt;
===Összetett típusok===&lt;br /&gt;
&lt;br /&gt;
* Rekord&lt;br /&gt;
** Típus deklaráció: =TYPE típusnév IS RECORD (mezőnév típus, mezőnév típus, ...);= &lt;br /&gt;
&amp;lt;br/&amp;gt; =típus=: &amp;lt;pre&amp;gt;típusnév [NOT NULL] [{:= | DEFAULT} érték];&amp;lt;/pre&amp;gt;&lt;br /&gt;
** Változó deklaráció: =rekord_változó típusnév=&lt;br /&gt;
** Hivatkozás a rekord mezőjére: =rekord_változó.mezőnév=&lt;br /&gt;
** Értékadás: &amp;lt;pre&amp;gt;:=&amp;lt;/pre&amp;gt;, ha a két rekord azonos típusú, &lt;br /&gt;
&amp;lt;br/&amp;gt; =SELECT ... INTO rekord= vagy =FETCH ... INTO rekord=&lt;br /&gt;
* Rekord az adatbázis sémából&lt;br /&gt;
** =rekord_változó1 tábla%ROWTYPE;= &lt;br /&gt;
&amp;lt;br/&amp;gt; =rekord_változó2 tábla%ROWTYPE;= &lt;br /&gt;
&amp;lt;br/&amp;gt; A két változó nem lesz azonos típusú, még akkor sem, ha ugyanannak a táblának a sorát reprezentálják.&lt;br /&gt;
* Tömb: &lt;br /&gt;
** Az elemek azonos típusúak&lt;br /&gt;
** Az elemek sorban követik egymást, a tömb nem tartalmazhat lyukakat&lt;br /&gt;
** Az elemek indexelése 1-től kezdődik&lt;br /&gt;
** A minimális méret 1, az =EXTEND= metódussal növelhető, de nem haladhatja meg a deklarációkor megadott maximumot. Az új elemek a tömb végére szúrhatók be.&lt;br /&gt;
** Oszlop típusa is lehet&lt;br /&gt;
** Inicializálás előtt NULL értékű&lt;br /&gt;
** Deklaráció: =TYPE tömbtípus IS VARRAY(5) OF INT;=&lt;br /&gt;
** Konstruktor: &amp;lt;pre&amp;gt;tömb:=tömbtípus(elem, elem, ...);&amp;lt;/pre&amp;gt;&lt;br /&gt;
** Új elem beszúrása: =tömb.EXTEND=; majd &amp;lt;pre&amp;gt;tömb(tömb.LAST):=érték;&amp;lt;/pre&amp;gt;&lt;br /&gt;
** Címzés: =tömbnév(index)=&lt;br /&gt;
* Nested table &amp;amp;mdash; különbségek a sima tömbhöz képest&lt;br /&gt;
** Az elemszám nem korlátos&lt;br /&gt;
** Ritka, középről is törölhetők elemek&lt;br /&gt;
** Deklaráció: =TYPE típusnév IS TABLE OF elem_típus [NOT NULL];=&lt;br /&gt;
* Index-by table = hash tábla&lt;br /&gt;
** Nem lehet táblában tárolni&lt;br /&gt;
** Nem kell inicializálni, kezdetben üres&lt;br /&gt;
** Szerkezeténél fogva ritka&lt;br /&gt;
** Az index negatív is lehet, az Oracle 10g-től kezdve pedig =VARCHAR2= is.&lt;br /&gt;
** Deklaráció: =TYPE típusnév IS TABLE OF elem_típus INDEX BY index_típus;=&lt;br /&gt;
&lt;br /&gt;
Példa tömb használatára:&lt;br /&gt;
&amp;lt;code class=&amp;quot;pre&amp;quot;&amp;gt;DECLARE&lt;br /&gt;
	TYPE tombtipus IS VARRAY(5) OF INT;&lt;br /&gt;
	tomb tombtipus;&lt;br /&gt;
BEGIN&lt;br /&gt;
	tomb:=tombtipus(1,4,9);&lt;br /&gt;
	tomb.EXTEND;&lt;br /&gt;
	tomb(4):=16;&lt;br /&gt;
	FOR i IN 1..tomb.LAST LOOP&lt;br /&gt;
		DBMS_OUTPUT.PUT_LINE(tomb(i));&lt;br /&gt;
	END LOOP;&lt;br /&gt;
END;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Metódusok====&lt;br /&gt;
&lt;br /&gt;
=változónév.metódusnév[(paraméterek)]= formában hívhatók&lt;br /&gt;
&lt;br /&gt;
* =EXISTS(n)=: n. indexen van-e elem. Ha túlcímzünk a tömbön, &amp;lt;pre&amp;gt;FALSE&amp;lt;/pre&amp;gt;-szal tér vissza.&lt;br /&gt;
* =COUNT=: a kollekció elemszáma. Nested table-nél értéke különbözhet a &amp;lt;pre&amp;gt;LAST&amp;lt;/pre&amp;gt;-tól.&lt;br /&gt;
* =LIMIT=: a kollekció maximális elemszáma. Nested table-nél NULL.&lt;br /&gt;
* =FIRST=, =LAST=: első illetve utolsó elem indexe. Üres kollekció esetén NULL.&lt;br /&gt;
* =PRIOR(n)=, =NEXT(n)=: n-et megelőző illetve rákövetkező kitöltött elem indexe. =VARRAY= esetén n-1 illetve n+1, index-by table-re nincs értelmezve. Ha nincs előző vagy következő elem, &amp;lt;pre&amp;gt;NULL&amp;lt;/pre&amp;gt;-lal tér vissza.&lt;br /&gt;
* =EXTEND=, =ENTEND(n)=, =EXTEND(n,i)=: bővíti a &amp;lt;pre&amp;gt;VARRAY&amp;lt;/pre&amp;gt;-t vagy a nested table-t 1 db &amp;lt;pre&amp;gt;NULL&amp;lt;/pre&amp;gt;-lal, n db &amp;lt;pre&amp;gt;NULL&amp;lt;/pre&amp;gt;-lal, illetve n példánnyal az i indexű elemből. Index-by table-re nem értelmezett.&lt;br /&gt;
* =TRIM=, =TRIM(n)=: törli a =VARRAY= vagy a nested table utolsó 1 illetve n elemét. Index-by table-re nem értelmezett.&lt;br /&gt;
* =DELETE=, =DELETE(n)=, =DELETE(n,m)=: törli az összes, az n. illetve a [n...m] intervallum összes elemét az index-by vagy nested table-ből.&lt;br /&gt;
&lt;br /&gt;
-- [[PallosPeter|Peti]] - 2006.03.06.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Valaszthato]]&lt;/div&gt;</summary>
		<author><name>2001:738:2001:2078:0:208:37:0</name></author>
	</entry>
</feed>