Oracle Array als Variable
Tabelle erzeugen: |
||
-- DROP TABLE WEB_BESUCHER CASCADE CONSTRAINTS; -- Create table create table WEB_BESUCHER ( SERVERS VARCHAR2(5), JAN NUMBER, FEB NUMBER, MRZ NUMBER, APR NUMBER, MAI NUMBER, JUN NUMBER, JUL NUMBER, AUG NUMBER, SEP NUMBER, OKT NUMBER, NOV NUMBER, DEZ NUMBER ) tablespace USERS pctfree 10 initrans 1 maxtrans 255 storage ( initial 5M minextents 1 maxextents unlimited ); INSERT INTO WEB_BESUCHER VALUES('srv1',1200,1300,1500,1100,2000,3000,2100,4200,3000,2001,1589,2456); INSERT INTO WEB_BESUCHER VALUES('srv2',120,130,150,110,200,300,210,420,300,201,159,245); COMMIT; |
||
Prozedur erzeugen: |
||
-- Create procedure CREATE OR REPLACE PROCEDURE VARI_ARR IS /************************************** -- Stand ..... -- **************************************/ BEGIN DECLARE t_BG NUMBER := 1; t_ED NUMBER := 12; t_SERVER WEB_BESUCHER.SERVERS%TYPE; TYPE MON_ARR IS TABLE OF VARCHAR2(3) INDEX BY BINARY_INTEGER; MON MON_ARR; TYPE WERT_ARR IS TABLE OF WEB_BESUCHER.JAN%TYPE INDEX BY BINARY_INTEGER; WERT WERT_ARR; CURSOR WERT_CUR IS SELECT t.SERVERS,t.JAN,t.FEB,t.MRZ,t.APR,t.MAI,t.JUN,t.JUL,t.AUG,t.SEP,t.OKT,t.NOV,t.DEZ FROM WEB_BESUCHER t WHERE t.SERVERS IN ('srv1','srv2'); BEGIN SELECT 'JAN','FEB','MRZ','APR','MAI','JUN','JUL','AUG','SEP','OKT','NOV','DEZ' INTO MON(1),MON(2),MON(3),MON(4),MON(5),MON(6),MON(7),MON(8),MON(9),MON(10),MON(11),MON(12) FROM DUAL; OPEN WERT_CUR; LOOP FETCH WERT_CUR INTO t_SERVER,WERT(1),WERT(2),WERT(3),WERT(4),WERT(5),WERT(6),WERT(7),WERT(8),WERT(9),WERT(10),WERT(11),WERT(12); EXIT WHEN WERT_CUR%NOTFOUND; dbms_output.put_line(t_SERVER||':'); WHILE t_BG <= t_ED LOOP dbms_output.put_line(MON(t_BG)||' - '||WERT(t_BG)); t_BG := t_BG + 1; END LOOP; t_BG := 1; END LOOP; CLOSE WERT_CUR; END; END VARI_ARR; |
||
Prozedur aufrufen: |
||
-- Call the procedure begin vari_arr; end; |
||