http://docs.oracle.com/cd/B28359_01/appdev.111/b28370/controlstructures.htm
22 lutego 2012
Using PL/SQL Loops and Control Structures
Komentarze są wyłączone
31 grudnia 2010
PL/SQL – przykład prostych procedur
create or replace procedure sfis_owner.wsp_kwadratow(numer varchar) AS CURSOR id_obszaru IS select obsz_id from sfis_owner.fis_obszary where obsz_kod like numer||'%' and obsz_rodzaj_obszaru='FAO'; BEGIN dbms_output.put_line('Podany numer ' || numer); FOR rekord IN id_obszaru LOOP -- trzeba ustawic 'set serveroutput on' na kliencie dbms_output.put_line(rekord.obsz_id); END LOOP; END /
DATA TYPE: composite (nested table of numbers): create or replace procedure sfis_owner.wsp_kwadratow(numer varchar) AS TYPE num_arr_type IS TABLE OF NUMBER; sid_obszarow num_arr_type; CURSOR id_obszaru IS select obsz_id from sfis_owner.fis_obszary where obsz_kod like numer||'%' and obsz_rodzaj_obszaru='FAO'; BEGIN sid_obszarow := num_arr_type(); dbms_output.put_line('Podany numer ' || numer); FOR rekord IN id_obszaru LOOP -- trzeba ustawic 'set serveroutput on' na kliencie -- dbms_output.put_line(rekord.obsz_id); sid_obszarow.extend; sid_obszarow(sid_obszarow.Count) := rekord.obsz_id; Dbms_Output.put_line(sid_obszarow.Count || ' ' || sid_obszarow(sid_obszarow.Count)); END LOOP; END;
Odwołania do wartości nested table of numbers: create or replace procedure sfis_owner.wsp_kwadratow(numer varchar) AS TYPE num_arr_type IS TABLE OF NUMBER; sid_obszarow num_arr_type; CURSOR id_obszaru IS select obsz_id from sfis_owner.fis_obszary where obsz_kod like numer||'%' and obsz_rodzaj_obszaru='FAO'; nr1 NUMBER; BEGIN sid_obszarow := num_arr_type(); dbms_output.put_line('Podany numer ' || numer); FOR rekord IN id_obszaru LOOP -- trzeba ustawic 'set serveroutput on' na kliencie -- dbms_output.put_line(rekord.obsz_id); sid_obszarow.extend; sid_obszarow(sid_obszarow.Count) := rekord.obsz_id; Dbms_Output.put_line(sid_obszarow.Count || ' ' || sid_obszarow(sid_obszarow.Count)); END LOOP; dbms_output.put_line('Koniec petli 1'); dbms_output.put_line(sid_obszarow(sid_obszarow.Count-2)); dbms_output.put_line(sid_obszarow.Count); nr1 := sid_obszarow.Count;dbms_output.put_line('nr1: ' || nr1); FOR X IN 1..nr1 LOOP dbms_output.put_line(X || ' ' || sid_obszarow(X)); END LOOP; END;
Kasowanie wartości nested table of numbers:
create or replace procedure sfis_owner.wsp_kwadratow(numer varchar) AS TYPE num_arr_type IS TABLE OF NUMBER; sid_obszarow num_arr_type; CURSOR id_obszaru IS select obsz_id from sfis_owner.fis_obszary where obsz_kod like numer||'%' and obsz_rodzaj_obszaru='FAO'; nr1 NUMBER; BEGIN sid_obszarow := num_arr_type(); dbms_output.put_line('Podany numer regionu: ' || numer); FOR rekord IN id_obszaru LOOP -- trzeba ustawic 'set serveroutput on' na kliencie -- dbms_output.put_line(rekord.obsz_id); sid_obszarow.extend; sid_obszarow(sid_obszarow.Count) := rekord.obsz_id; --Dbms_Output.put_line(sid_obszarow.Count || ' ' || sid_obszarow(sid_obszarow.Count)); END LOOP; --dbms_output.put_line('Koniec petli 1'); --dbms_output.put_line(sid_obszarow(sid_obszarow.Count-2)); --dbms_output.put_line(sid_obszarow.Count); nr1 := sid_obszarow.Count; --dbms_output.put_line('nr1: ' || nr1); FOR X IN 1..nr1 LOOP dbms_output.put_line(X || ' ' || sid_obszarow(X)); END LOOP; -- kasujemy rekord nr 5 sid_obszarow.DELETE(5); FOR X IN 1..nr1 LOOP -- trzeba sprawdzić czy rekord istnieje bo w przeciwnym wypadku wywali błąd IF(sid_obszarow.exists(X)) THEN dbms_output.put_line(X || ' ' || sid_obszarow(X)); END IF; END LOOP; END;
Komentarze są wyłączone
23 grudnia 2010
Oracle – sesje użytkowników.
Aby wyświetlić aktywne sesje użytkowników w bazie danych Oracle:
select b.Username, b.Osuser, b.Process, b.Machine, a.Spid, b.Program, b.Sid, b.Serial# from v$process a, v$session b where a.Addr = b.Paddr ORDER BY b.Machine /
Komentarze są wyłączone