Differences

This shows you the differences between two versions of the page.

Link to this comparison view

bdd:laboratoare:04 [2024/10/07 11:27]
127.0.0.1 external edit
bdd:laboratoare:04 [2024/10/07 14:38] (current)
ciprian.truica
Line 27: Line 27:
 <color red>Ex. 1</​color>​ Exemplu greșit de folosire a unui cursor implicit (returnează mai mute valori care nu pot să fie inserate în variabila salariu): <color red>Ex. 1</​color>​ Exemplu greșit de folosire a unui cursor implicit (returnează mai mute valori care nu pot să fie inserate în variabila salariu):
  
-{{:bdd:​laboratoare:​lab4_ex1_new.png?​nolink&​350|}}+{{:bd2:​laboratoare:​lab4_ex1_new.png?​nolink&​350|}}
  
 <color red>Ex. 2</​color>​ Exemplu corect de folosire a unui cursor implicit (clauza where conține o condiție care garantează că se va întoarce o singură valoare): <color red>Ex. 2</​color>​ Exemplu corect de folosire a unui cursor implicit (clauza where conține o condiție care garantează că se va întoarce o singură valoare):
  
-{{:bdd:​laboratoare:​lab4_ex2_new.png?​nolink&​350|}}+{{:bd2:​laboratoare:​lab4_ex2_new.png?​nolink&​350|}}
  
 <color red>Ex. 3</​color>​ Exemplu corect de folosire a unui cursor implicit care returnează mai multe înregistrări (se folosește un nested table în care se inserează salariile angajaților din departamentul 80): <color red>Ex. 3</​color>​ Exemplu corect de folosire a unui cursor implicit care returnează mai multe înregistrări (se folosește un nested table în care se inserează salariile angajaților din departamentul 80):
  
-{{:bdd:​laboratoare:​lab4_ex3_new.png?​nolink&​600|}} ​+{{:bd2:​laboratoare:​lab4_ex3_new.png?​nolink&​600|}} ​
  
 ==== Cursoare Explicite ==== ==== Cursoare Explicite ====
Line 67: Line 67:
   * for update – este opțiunea de blocare a liniilor (lock) selectate de cursor în baza de date    * for update – este opțiunea de blocare a liniilor (lock) selectate de cursor în baza de date 
  
-Observatii:+Observații:
   * Interogarea SELECT poate să fie de oricetip, poate să conțină joinuri și poate să conțină subcereri   * Interogarea SELECT poate să fie de oricetip, poate să conțină joinuri și poate să conțină subcereri
   * Există o convenție în Oracle care recomandă ca numele cursoarelor să înceapă cu litera c; folosind un astfel de nume va fi clar că numele din secțiunea de declarare se referă la un cursor   * Există o convenție în Oracle care recomandă ca numele cursoarelor să înceapă cu litera c; folosind un astfel de nume va fi clar că numele din secțiunea de declarare se referă la un cursor
Line 159: Line 159:
 <color red>Ex. 4</​color>​ Să se declare un cursor care selectează denumirea departamentului,​ numele angajatului,​ salariul și data angajării pentru acei angajati care au venit în companie în 2003. <color red>Ex. 4</​color>​ Să se declare un cursor care selectează denumirea departamentului,​ numele angajatului,​ salariul și data angajării pentru acei angajati care au venit în companie în 2003.
  
-{{:bdd:​laboratoare:​lab4_ex4_new.png?​nolink&​740|}} ​+{{:bd2:​laboratoare:​lab4_ex4_new.png?​nolink&​740|}} ​
  
 <color red>Ex. 5</​color>​ Să se folosească un cursor pentru a face o listă cu veniturile managerilor din companie. <color red>Ex. 5</​color>​ Să se folosească un cursor pentru a face o listă cu veniturile managerilor din companie.
  
-{{:bdd:​laboratoare:​lab4_ex5_new.png?​nolink&​740|}} ​+{{:bd2:​laboratoare:​lab4_ex5_new.png?​nolink&​740|}} ​
  
 Setul activ de date definite de cursorul c_angajati este procesat linie cu linie. Ciclul iterativ de citire și procesare a liniilor individuale continuă până la procesarea tuturor liniilor din setul activ. ​ Setul activ de date definite de cursorul c_angajati este procesat linie cu linie. Ciclul iterativ de citire și procesare a liniilor individuale continuă până la procesarea tuturor liniilor din setul activ. ​
Line 189: Line 189:
 <color red>Ex. 6</​color>​ Rescriere exemplu 5 folosind FOR. <color red>Ex. 6</​color>​ Rescriere exemplu 5 folosind FOR.
  
-{{:bdd:​laboratoare:​lab4_ex6_new.png?​nolink&​740|}} ​+{{:bd2:​laboratoare:​lab4_ex6_new.png?​nolink&​740|}} ​
  
 Într-un ciclu FOR se poate folosi un SELECT care este tot un cursor, dar care nu trebuie să mai fie declarat în secțiunea DECLARE. Sintaxa este: Într-un ciclu FOR se poate folosi un SELECT care este tot un cursor, dar care nu trebuie să mai fie declarat în secțiunea DECLARE. Sintaxa este:
Line 203: Line 203:
 <color red>Ex. 7</​color>​ Să se rescrie exercițiul 6 folosind un SELECT în ciclul FOR. <color red>Ex. 7</​color>​ Să se rescrie exercițiul 6 folosind un SELECT în ciclul FOR.
  
-{{:bdd:​laboratoare:​lab4_ex7_new.png?​nolink&​740|}} ​+{{:bd2:​laboratoare:​lab4_ex7_new.png?​nolink&​740|}} ​
  
 Când ne referim la rândul curent dintr-un cursor explicit comenzile SQL pot folosi clauza WHERE CURRENT OF cursor_name. Această clauză permite actualizarea sau ștergerea în punctul în care se află cursorul, fără a fi necesară folosirea condițiilor în clauza WHERE pentru identificarea unică a liniei. Trebuie să se folosească clauza FOR UPDATE în definirea cursorului pentru a se bloca rândurile la deschidere (se face un lock). Când ne referim la rândul curent dintr-un cursor explicit comenzile SQL pot folosi clauza WHERE CURRENT OF cursor_name. Această clauză permite actualizarea sau ștergerea în punctul în care se află cursorul, fără a fi necesară folosirea condițiilor în clauza WHERE pentru identificarea unică a liniei. Trebuie să se folosească clauza FOR UPDATE în definirea cursorului pentru a se bloca rândurile la deschidere (se face un lock).
Line 213: Line 213:
 <color red>Ex. 8</​color>​ Să se modifice comisionul cu 10% din salariu pentru angajații care au peste 18 ani vechime în companie. <color red>Ex. 8</​color>​ Să se modifice comisionul cu 10% din salariu pentru angajații care au peste 18 ani vechime în companie.
  
-{{:bdd:​laboratoare:​lab4_ex8_new.png?​nolink&​740|}} ​+{{:bd2:​laboratoare:​lab4_ex8_new.png?​nolink&​740|}} ​
  
 <color red>Ex. 9</​color>​ Să se șteargă din tabela employees toți angajații care nu au comision. <color red>Ex. 9</​color>​ Să se șteargă din tabela employees toți angajații care nu au comision.
  
-{{:bdd:​laboratoare:​lab4_ex9_new.png?​nolink&​740|}} ​+{{:bd2:​laboratoare:​lab4_ex9_new.png?​nolink&​740|}} ​
  
  
Line 224: Line 224:
 <color red>Ex. 10</​color>​ Să se facă o listă cu angajații care fac parte dintr-un departament specificat, au o anumită funcție și au venit în companie la o anumită dată specificată. Aceste condiții să fie transmise ca parametri unui cursor. <color red>Ex. 10</​color>​ Să se facă o listă cu angajații care fac parte dintr-un departament specificat, au o anumită funcție și au venit în companie la o anumită dată specificată. Aceste condiții să fie transmise ca parametri unui cursor.
  
-{{:bdd:​laboratoare:​lab4_ex10_new.png?​nolink&​740|}} ​+{{:bd2:​laboratoare:​lab4_ex10_new.png?​nolink&​740|}} ​
  
 ==== Tipuri de variabile REF CURSOR, SYS_REFCURSOR și RECORD ==== ==== Tipuri de variabile REF CURSOR, SYS_REFCURSOR și RECORD ====
Line 281: Line 281:
 <color red>Ex. 11</​color>​ Să se facă o listă cu toate departamentele. <color red>Ex. 11</​color>​ Să se facă o listă cu toate departamentele.
  
-{{:bdd:​laboratoare:​lab4_ex11_new.png?​nolink&​740|}}+{{:bd2:​laboratoare:​lab4_ex11_new.png?​nolink&​740|}}
  
 <color red>Ex. 12</​color>​ Să se listeze toți angajatii din tabela employees. <color red>Ex. 12</​color>​ Să se listeze toți angajatii din tabela employees.
  
-{{:bdd:​laboratoare:​lab4_ex12_new.png?​nolink&​600|}}+{{:bd2:​laboratoare:​lab4_ex12_new.png?​nolink&​600|}}
  
  
Line 292: Line 292:
  
  
-{{:bdd:​laboratoare:​lab4_ex13_new.png?​nolink&​740|}}+{{:bd2:​laboratoare:​lab4_ex13_new.png?​nolink&​740|}}
  
 ==== Eficiența cursoarelor ==== ==== Eficiența cursoarelor ====
Line 317: Line 317:
   * Dacă salariu_sef >= salariu_mediu_departament atunci comision_sef = 20% * salariu_mediu_departament   * Dacă salariu_sef >= salariu_mediu_departament atunci comision_sef = 20% * salariu_mediu_departament
  
-{{:bdd:​laboratoare:​lab4_ex14_new.png?​nolink&​740|}}+{{:bd2:​laboratoare:​lab4_ex14_new.png?​nolink&​740|}}
bdd/laboratoare/04.1728289675.txt.gz · Last modified: 2024/10/07 14:38 (external edit)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0