Skrypty SQL i PL/SQL « Różności …

Różności …

22 lutego 2012

Using PL/SQL Loops and Control Structures

Zaszufladkowany do: PL/SQL,Programowanie,Skrypty SQL i PL/SQL — Jacek @ 19:07

http://docs.oracle.com/cd/B28359_01/appdev.111/b28370/controlstructures.htm

31 grudnia 2010

PL/SQL – przykład prostych procedur

Zaszufladkowany do: Skrypty SQL i PL/SQL — Jacek @ 09:47
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;

23 grudnia 2010

Oracle – sesje użytkowników.

Zaszufladkowany do: Bazy danych,Oracle,Skrypty SQL i PL/SQL — Tagi: — Jacek @ 16:44
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
/

Strona startowa: www.jaceksen.pl