PL/SQL – przykład prostych procedur « Różności …

Różności …

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;

Brak komentarzy

Brak komentarzy.

Kanał RSS z komentarzami do tego wpisu.

Przepraszamy, możliwość dodawania komentarzy jest obecnie wyłączona.

Strona startowa: www.jaceksen.pl