<?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_Labor%2C_2006.05.16.</id>
	<title>Adatbázisok szerver oldali programozása Labor, 2006.05.16. - 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_Labor%2C_2006.05.16."/>
	<link rel="alternate" type="text/html" href="https://vik.wiki/index.php?title=Adatb%C3%A1zisok_szerver_oldali_programoz%C3%A1sa_Labor,_2006.05.16.&amp;action=history"/>
	<updated>2026-05-16T19:22:00Z</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_Labor,_2006.05.16.&amp;diff=163858&amp;oldid=prev</id>
		<title>2001:738:2001:2078:0:208:37:0: Új oldal, tartalma: „{{GlobalTemplate|Valaszthato|AdatbServerProgJegyzet20060516}}  &lt;!--  * Set DENYTOPICVIEW = TWikiGuest --&gt;   &lt;style&gt;  	code.pre { white-space: pre; display: block; m…”</title>
		<link rel="alternate" type="text/html" href="https://vik.wiki/index.php?title=Adatb%C3%A1zisok_szerver_oldali_programoz%C3%A1sa_Labor,_2006.05.16.&amp;diff=163858&amp;oldid=prev"/>
		<updated>2013-03-31T19:04:12Z</updated>

		<summary type="html">&lt;p&gt;Új oldal, tartalma: „{{GlobalTemplate|Valaszthato|AdatbServerProgJegyzet20060516}}  &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; m…”&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Új lap&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{GlobalTemplate|Valaszthato|AdatbServerProgJegyzet20060516}}&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; margin-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; [[AdatbServerProgJegyzet20060512|&amp;amp;lt;&amp;amp;lt;]] Labor, 2006.05.16.&lt;br /&gt;
&lt;br /&gt;
1. Mire jó a =%TYPE= és a =%ROWTYPE=?&lt;br /&gt;
* =%TYPE=: oszlop típusa&lt;br /&gt;
* =%ROWTYPE=: sor típus&lt;br /&gt;
&lt;br /&gt;
Előny: nem kell emlékezni a típusra (típus hosszra), típus egyszerűen megváltoztatható&lt;br /&gt;
&amp;lt;code class=&amp;quot;pre&amp;quot;&amp;gt;DECLARE&lt;br /&gt;
	a anyag_nev%TYPE&lt;br /&gt;
	b anyag_nev%ROWTYPE&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Nested table vs index by tabl&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
| || &amp;#039;&amp;#039;&amp;#039;nested&amp;#039;&amp;#039;&amp;#039; || &amp;#039;&amp;#039;&amp;#039;index by&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;méret&amp;#039;&amp;#039;&amp;#039; || korlátlan, de EXTEND-del kell bővíteni || korlátlan &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;index sűrű vagy ritka?&amp;#039;&amp;#039;&amp;#039; || sűrű, de lehet ritka is || ritka &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;init nélkül&amp;#039;&amp;#039;&amp;#039; || NULL || üres &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
3. Kurzornak hogy tudunk paramétert átadni? Hogyan kell deklarálni és használni?&lt;br /&gt;
&amp;lt;code class=&amp;quot;pre&amp;quot;&amp;gt;DECLARE CURSOR c1(param típus) IS SELECT ... WHERE param=oszlop&lt;br /&gt;
BEGIN&lt;br /&gt;
	OPEN c1(érték)&lt;br /&gt;
	...&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. Oracle kivételek csoportosítása&lt;br /&gt;
* rendszer&lt;br /&gt;
** névvel ellátott&lt;br /&gt;
** név nélküli&lt;br /&gt;
* user&lt;br /&gt;
** felhasználói&lt;br /&gt;
* RAISE_APPLICATION_ERROR&lt;br /&gt;
&lt;br /&gt;
5. &lt;br /&gt;
Hatáskör def: ahol tudunk a változóra hivatkozni&lt;br /&gt;
Láthatóság: ahol az egyszerű nevével tudunk rá hivatkozni (az a blokk, ahol deklaráltuk)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code class=&amp;quot;pre&amp;quot;&amp;gt;&amp;amp;lt;&amp;amp;lt;címke&amp;amp;gt;&amp;amp;gt;&lt;br /&gt;
DECLARE a INT&lt;br /&gt;
BEGIN&lt;br /&gt;
	DECLARE a VARCHAR(2);&lt;br /&gt;
	BEGIN&lt;br /&gt;
		címke.a&lt;br /&gt;
		a&lt;br /&gt;
	END&lt;br /&gt;
END&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
6. Típus precedencia, mi a szerepe?&lt;br /&gt;
Típusok sorba vannak rendezve, az operátorok a magasabb precedenciájú típussal térnek vissza&lt;br /&gt;
&lt;br /&gt;
7. &lt;br /&gt;
CLOSE:&lt;br /&gt;
DEALLOCATE:&lt;br /&gt;
&lt;br /&gt;
8. inserted, delete átmeneti táblákkal&lt;br /&gt;
&lt;br /&gt;
9. Hogyan adhat vissza információt egy tárolt eljárás SQL szerveren?&lt;br /&gt;
* státusz INT&lt;br /&gt;
* eredményhalmaz&lt;br /&gt;
* kimeneti paraméterek&lt;br /&gt;
* globális kurzor&lt;br /&gt;
Tárolt eljárás futtatása: EXEC [@status=]eljárásnév param1, param2, ...&lt;br /&gt;
&lt;br /&gt;
10&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;kurzor&amp;#039;&amp;#039;&amp;#039; || &amp;#039;&amp;#039;&amp;#039;kurzorváltozó&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
kurzor:&lt;br /&gt;
&amp;lt;code class=&amp;quot;pre&amp;quot;&amp;gt;DECLARE&lt;br /&gt;
	CURSOR c[(param)] IS SELECT...&lt;br /&gt;
BEGIN&lt;br /&gt;
	OPEN c(5);&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
kurzor változó:&lt;br /&gt;
&amp;lt;code class=&amp;quot;pre&amp;quot;&amp;gt;DECLARE&lt;br /&gt;
	TYPE c_t IS REF CURSOR;&lt;br /&gt;
	c c_t;&lt;br /&gt;
BEGIN&lt;br /&gt;
	OPEN c1 FOR SELECT ...&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Közös kód:&lt;br /&gt;
&amp;lt;code class=&amp;quot;pre&amp;quot;&amp;gt;	LOOP&lt;br /&gt;
		FETCH c INTO valt&lt;br /&gt;
		EXIT WHEN c%NOTFOUND&lt;br /&gt;
	END LOOP&lt;br /&gt;
	CLOSE c&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
kurzor: FOR ciklus csak erre használható&lt;br /&gt;
kurzor változó: másik lekérdezésre is leírható&lt;br /&gt;
&lt;br /&gt;
11. Tranzakciós módok SQL Serveren&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
| || &amp;#039;&amp;#039;&amp;#039;magyarázat&amp;#039;&amp;#039;&amp;#039; || &amp;#039;&amp;#039;&amp;#039;Hogyan váltunk oda?&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;auto commit&amp;#039;&amp;#039;&amp;#039; || Minden utasítás külön tranzakció  || default vagy SET IMPLICIT_TRANSACTIONS OFF &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;explicit&amp;#039;&amp;#039;&amp;#039; || explicit kezdet és vég || BEGIN TRAN ... COMMIT/ROLLBACK &lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;implicit&amp;#039;&amp;#039;&amp;#039; || adatmódosító utasítás új tranzakciót nyit, COMMIT/ROLLBACK zárja le || SET IMPLICIT_TRANSACTIONS ON &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
12. Naplózzuk, ha egy diáknak módosul az osztályzata&lt;br /&gt;
&amp;lt;code class=&amp;quot;pre&amp;quot;&amp;gt;CREATE TABLE naplo (&lt;br /&gt;
	naploid INT PRIMARY KEY,&lt;br /&gt;
	diakid CHAR(5),&lt;br /&gt;
	examid INT,&lt;br /&gt;
	datum DATE,&lt;br /&gt;
	targynev VARCHAR(50),&lt;br /&gt;
	targykod CHAR(8),&lt;br /&gt;
	regi INT,&lt;br /&gt;
	uj INT&lt;br /&gt;
);&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code class=&amp;quot;pre&amp;quot;&amp;gt;CREATE TRIGGER naplozo&lt;br /&gt;
	AFTER UPDATE ON student_exam&lt;br /&gt;
	FOR EACH ROW&lt;br /&gt;
	WHEN (old.sx_grade != new.sx_grade)&lt;br /&gt;
DECLARE&lt;br /&gt;
	tnev VARCHAR(50);&lt;br /&gt;
	tkod CHAR(8);&lt;br /&gt;
BEGIN&lt;br /&gt;
	SELECT sub_name, sub_id INTO tnev, tkod&lt;br /&gt;
	FROM subject, course, exam&lt;br /&gt;
	WHERE sub_id = cou_subjectid&lt;br /&gt;
		AND ex_courseid = cou_id&lt;br /&gt;
		AND ex_id = :new.sx_examid;&lt;br /&gt;
	INSERT INTO naplo VALUES(&lt;br /&gt;
		nep_seq.NEXTVAL,&lt;br /&gt;
		:new.sx_studentid,&lt;br /&gt;
		:new.sx_examid,&lt;br /&gt;
		sysdate,&lt;br /&gt;
		tnev,&lt;br /&gt;
		tkod,&lt;br /&gt;
		:old.sx_grade,&lt;br /&gt;
		:new.sx_grade);&lt;br /&gt;
END;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
13.&lt;br /&gt;
&amp;lt;code class=&amp;quot;pre&amp;quot;&amp;gt;create or replace trigger terem_trigger&lt;br /&gt;
  before insert on teacher_room&lt;br /&gt;
  for each row&lt;br /&gt;
declare&lt;br /&gt;
  def int;&lt;br /&gt;
  teadept char(4);&lt;br /&gt;
  roomdept char(4);&lt;br /&gt;
begin&lt;br /&gt;
  if (:new.tr_default = 1) then&lt;br /&gt;
	 select count(tr_default) into def from teacher_room&lt;br /&gt;
	 where tr_teacherid = :new.tr_teacherid and tr_default=1;&lt;br /&gt;
	 if (def=0) then&lt;br /&gt;
		select tea_dept into teadept from teacher where tea_id=:new.tr_teacherid;&lt;br /&gt;
		select room_dept into roomdept from room where room_id=:new.tr_roomid;&lt;br /&gt;
		if (teadept != roomdept) then&lt;br /&gt;
		  raise_application_error(-20102, &amp;#039;Rossz épületben van&amp;#039;);&lt;br /&gt;
		end if;&lt;br /&gt;
	 else&lt;br /&gt;
		raise_application_error(-20101, &amp;#039;Már van alapértelmezett terem&amp;#039;);&lt;br /&gt;
	 end if;&lt;br /&gt;
  else&lt;br /&gt;
	 select count(*) into def from teacher_room&lt;br /&gt;
	 where tr_teacherid=:new.tr_teacherid and tr_default=0;&lt;br /&gt;
	 if (def&amp;gt;3) then&lt;br /&gt;
		raise_application_error(-20103, &amp;#039;Túl sok terem&amp;#039;);&lt;br /&gt;
	 end if;&lt;br /&gt;
  end if;&lt;br /&gt;
end terem_trigger;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
14.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code class=&amp;quot;pre&amp;quot;&amp;gt;create or replace procedure anyag_listazas(anev varchar2, fszam out int, tszam out int) is&lt;br /&gt;
  cursor c1 is select felkesz_nev from felkesz, felkesz_anyag, anyag &lt;br /&gt;
	 where anyag_nev=anev and anyag_id=fa_anyagid and felkesz_id=fa_felkeszid;&lt;br /&gt;
  cursor c2 is select termek_nev from termek, termek_anyag, anyag &lt;br /&gt;
	 where anyag_nev=anev and anyag_id=ta_anyagid and termek_id=ta_termekid;&lt;br /&gt;
begin&lt;br /&gt;
  -- ugyanez a termékre is&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
  fszam:=0;&lt;br /&gt;
  dbms_output.put_line(&amp;#039;A &amp;#039; ||| anev || &amp;#039; a következ&amp;amp;otilde; félkészekben szerepel&amp;#039;);&lt;br /&gt;
  for c1_rec in c1 loop&lt;br /&gt;
	 dbms_output.put_line(&amp;#039;	 &amp;#039; | c1_rec.felkesz_nev);&lt;br /&gt;
	 fszam := c1%rowcount;&lt;br /&gt;
  end loop;&lt;br /&gt;
  if (fszam=0) then&lt;br /&gt;
	 dbms_output.put_line(&amp;#039;	 -----&amp;#039;);&lt;br /&gt;
  end if;&lt;br /&gt;
end anyag_listazas;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
16.&lt;br /&gt;
&amp;lt;code class=&amp;quot;pre&amp;quot;&amp;gt;create procedure listazas&lt;br /&gt;
as&lt;br /&gt;
  declare c1 cursor for select sub_id, sub_name from subject&lt;br /&gt;
  declare @subid char(8), @subname char(50)&lt;br /&gt;
  open c1&lt;br /&gt;
  fetch c1 into @subid, @subname&lt;br /&gt;
  while @@fetch_status=0&lt;br /&gt;
  begin&lt;br /&gt;
	 print @subid + &amp;#039; &amp;#039; + @subname&lt;br /&gt;
	 declare c2 cursor for&lt;br /&gt;
		select distinct cou_semestername from course where cou_subjectid=@subid&lt;br /&gt;
	 declare @sem char(5)&lt;br /&gt;
	 open c2&lt;br /&gt;
	 fetch c2 into @sem&lt;br /&gt;
	 while @@fetch_status=0&lt;br /&gt;
	 begin&lt;br /&gt;
		print &amp;#039;	  &amp;#039; + @sem&lt;br /&gt;
		fetch c2 into @sem&lt;br /&gt;
	 end&lt;br /&gt;
	 deallocate c2&lt;br /&gt;
	 fetch c1 into @subid, @subname&lt;br /&gt;
  end&lt;br /&gt;
  deallocate c1&lt;br /&gt;
go&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- [[PallosPeter|Peti]] - 2006.05.16.&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>