Advertisement
orotib

Untitled

May 27th, 2015
366
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.89 KB | None | 0 0
  1. --1
  2. CREATE OR REPLACE PROCEDURE p01(p_rendszam IN szerelo.sz_auto.rendszam%TYPE,
  3. p_dat OUT szerelo.sz_autofelertekeles.datum%TYPE,
  4. p_ertek OUT szerelo.sz_autofelertekeles.ertek%TYPE) IS
  5. p_azon szerelo.sz_autofelertekeles.auto_azon%TYPE;
  6. tulSok EXCEPTION;
  7. PRAGMA EXCEPTION_INIT(tulSok,-20100);
  8. BEGIN
  9. p_dat := null;
  10. p_ertek := null;
  11.  
  12. select azon into p_azon from szerelo.sz_auto where rendszam=p_rendszam;
  13.  
  14. select af.datum, af.ertek into p_dat, p_ertek
  15. from szerelo.sz_autofelertekeles af inner join szerelo.sz_auto A
  16. ON AF.AUTO_AZON=a.azon
  17. where a.rendszam=p_rendszam and af.datum = (select max(datum)
  18. from szerelo.sz_autofelertekeles
  19. where auto_azon=p_azon);
  20. IF p_dat is null and p_ertek is null THEN
  21. select elso_vasarlasi_ar, elso_vasarlas_idopontja into p_ertek, p_dat
  22. from szerelo.sz_auto where rendszam=p_rendszam;
  23. END IF;
  24.  
  25. EXCEPTION
  26. WHEN NO_DATA_FOUND THEN p_dat := null; p_ertek := null;
  27. WHEN TOO_MANY_ROWS THEN RAISE_APPLICATION_ERROR(-20100,'Nem egyértelm? felértékelési dátum.');
  28. END p01;
  29. /
  30. DECLARE
  31. p_dat szerelo.sz_autofelertekeles.datum%TYPE;
  32. p_ertek szerelo.sz_autofelertekeles.ertek%TYPE;
  33. BEGIN
  34. p01('PAP270',p_dat,p_ertek);
  35. dbms_output.put_line(p_dat||' '||p_ertek);
  36. END;
  37. /
  38.  
  39. 6p
  40.  
  41. --2
  42. DROP TABLE utolso_felertekeles;
  43. CREATE TABLE utolso_felertekeles(
  44. --rendszam SZERELO.SZ_AUTO.rendszam%TYPE PRIMARY KEY,
  45. rendszam VARCHAR2(10 BYTE) PRIMARY KEY,
  46. --felertekeles_erteke szerelo.sz_autofelertekeles.ertek%TYPE,
  47. felertekeles_erteke NUMBER(20,0),
  48. --felertekeles_datum szerelo.sz_autofelertekeles.datum%TYPE,
  49. felertekeles_datuma DATE,
  50. kivetel VARCHAR2(50)
  51. );
  52. /
  53. 2p
  54.  
  55. --3
  56. DECLARE
  57. --t_rekord utolso_felertekeles%ROWTYPE;
  58.  
  59. FUNCTION f03(p_marka SZERELO.SZ_AUTOMARKA.nev%TYPE) RETURN NUMBER IS
  60. p_rendszam szerelo.sz_autofelertekeles.datum%TYPE;
  61. p_ertek szerelo.sz_autofelertekeles.ertek%TYPE;
  62. p_datum szerelo.sz_autofelertekeles.datum%TYPE;
  63. back NUMBER;
  64. kivetel NUMBER := 0;
  65.  
  66. CURSOR c1 IS
  67. select a.rendszam
  68. from szerelo.sz_auto a inner join szerelo.sz_autotipus at
  69. on a.tipus_azon=at.azon inner join szerelo.sz_automarka am
  70. on at.marka=am.nev
  71. where am.nev=p_marka;
  72. BEGIN
  73. --valami EXECUTE('DROP TABLE utolso_felertekeles; CREATE TABLE... (ami fent a létrehozás');
  74. OPEN c1; LOOP
  75. EXIT WHEN c1%NOTFOUND;
  76. FETCH c1 INTO p_rendszam;--, p_ertek;
  77. p01(p_rendszam, p_datum, p_ertek);
  78.  
  79. INSERT INTO utolso_felertekeles
  80. VALUES(p_rendszam, p_ertek, p_datum, 'nope');
  81.  
  82. END LOOP;
  83. back := c1%ROWCOUNT;
  84. CLOSE c1;
  85. dbms_output.put_line('lolf');
  86. return back;
  87.  
  88. EXCEPTION
  89. WHEN OTHERS THEN
  90. INSERT INTO utolso_felertekeles
  91. VALUES (p_rendszam, null, null, SQLERRM);
  92. return back;
  93. END f03;
  94. BEGIN
  95. dbms_output.put_line(f03('Ford'));
  96. dbms_output.put_line('lolb');
  97. END;
  98. /
  99.  
  100. 2p
  101.  
  102. DROP TABLE autofelertekeles;
  103. CREATE TABLE autofelertekeles AS
  104. select * from szerelo.sz_autofelertekeles;
  105. DROP TABLE sauto;
  106. CREATE TABLE sauto AS
  107. select * from szerelo.sz_auto;
  108. DROP TABLE auto_tulajdonosa;
  109. CREATE TABLE auto_tulajdonosa AS
  110. select * from szerelo.sz_auto_tulajdonosa;
  111. --4
  112. DECLARE
  113. p_rendszam szerelo.sz_auto.rendszam%TYPE;
  114. p_ertek szerelo.sz_autofelertekeles.ertek%TYPE;
  115. p_datum szerelo.sz_autofelertekeles.datum%TYPE;
  116. p_azon szerelo.sz_auto.azon%TYPE;
  117. p_tulaj_azon auto_tulajdonosa.tulaj_azon%TYPE;
  118. p_rozsa auto_tulajdonosa.tulaj_azon%TYPE;
  119. BEGIN
  120. select a.rendszam, a.azon into p_rendszam, p_azon
  121. from szerelo.sz_auto a inner join szerelo.sz_auto_tulajdonosa at --nem a saját táblámat használom, de azt módosítom, de nem akartam "elrontani" (csúnyábban írtam volna, de mégis csak egyetem :D)
  122. on a.azon=at.auto_azon inner join szerelo.sz_tulajdonos t
  123. on at.tulaj_azon=t.azon
  124. where t.nev='Rózsa Attila';
  125.  
  126. p01(p_rendszam, p_datum, p_ertek);
  127. p_ertek := p_ertek*0.8;
  128. p_datum := sysdate; --vásárlás dátuma
  129.  
  130. INSERT INTO autofelertekeles
  131. VALUES (p_azon, p_datum-1, p_ertek);
  132.  
  133. select azon into p_tulaj_azon
  134. from szerelo.sz_tulajdonos where nev='Papp Flóra';
  135.  
  136. select azon into p_rozsa
  137. from SZERELO.SZ_TULAJDONOS where nev='Rózsa Attila';
  138.  
  139. UPDATE auto_tulajdonosa SET vasarlas_ideje=sysdate, auto_azon=p_azon, tulaj_azon=p_tulaj_azon
  140. WHERE tulaj_azon=p_rozsa;
  141.  
  142. dbms_output.put_line('Autó új értéke: '||p_ertek);
  143. dbms_output.put_line('Vásárlás ideje: '||to_char(sysdate,'yyyy.mm.dd hh24:mi:ss'));
  144. END;
  145. /
  146.  
  147. 6p
  148.  
  149. select a.rendszam
  150. from szerelo.sz_auto a inner join szerelo.sz_auto_tulajdonosa at
  151. on a.azon=at.auto_azon inner join szerelo.sz_tulajdonos t
  152. on at.tulaj_azon=t.azon
  153. where t.nev='Rózsa Attila';
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement