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
