161 lines
3.6 KiB
SQL
161 lines
3.6 KiB
SQL
--Aufgabe 1
|
|
--es wird ein Error geschmissen weil das Extend für das Varray fehlt
|
|
|
|
--Aufgabe 2
|
|
|
|
DECLARE
|
|
CURSOR city_cur IS
|
|
SELECT city
|
|
FROM zipcode
|
|
WHERE rownum <= 10;
|
|
|
|
TYPE city_type IS VARRAY(10) OF zipcode.city%TYPE;
|
|
|
|
city_varray city_type := city_type();
|
|
v_counter INTEGER := 0;
|
|
|
|
BEGIN
|
|
FOR city_rec IN city_cur LOOP
|
|
city_varray.Extend;
|
|
v_counter := v_counter + 1;
|
|
city_varray(v_counter) := city_rec.city;
|
|
DBMS_OUTPUT.PUT_LINE('city_varray('||v_counter||'): '||
|
|
city_varray(v_counter));
|
|
END LOOP;
|
|
END;
|
|
/
|
|
|
|
--Aufgabe 3
|
|
|
|
DECLARE
|
|
CURSOR city_cur IS
|
|
SELECT city
|
|
FROM zipcode
|
|
WHERE rownum <= 10;
|
|
|
|
TYPE city_type IS VARRAY(20) OF zipcode.city%TYPE;
|
|
|
|
city_varray city_type := city_type();
|
|
v_counter INTEGER := 0;
|
|
|
|
BEGIN
|
|
FOR city_rec IN city_cur LOOP
|
|
city_varray.Extend;
|
|
v_counter := v_counter + 1;
|
|
city_varray(v_counter) := city_rec.city;
|
|
DBMS_OUTPUT.PUT_LINE('city_varray('||v_counter||'): '||city_varray(v_counter));
|
|
END LOOP;
|
|
FOR i IN 1..10 LOOP
|
|
city_varray.EXTEND;
|
|
city_varray(10 + i) := city_varray(i);
|
|
DBMS_OUTPUT.PUT_LINE('city_varray('||(10 + i)||'): '||city_varray(10 + i));
|
|
END LOOP;
|
|
END;
|
|
/
|
|
|
|
|
|
--Aufgabe 4
|
|
DECLARE
|
|
TYPE table_type1 IS TABLE OF INTEGER
|
|
INDEX BY BINARY_INTEGER;
|
|
|
|
TYPE table_type2 IS TABLE OF TABLE_TYPE1
|
|
INDEX BY BINARY_INTEGER;
|
|
|
|
table_tab1 table_type1;
|
|
table_tab2 table_type2;
|
|
|
|
BEGIN
|
|
FOR i IN 1..2 LOOP
|
|
FOR j IN 1..3 LOOP
|
|
IF i = 1 THEN
|
|
table_tab1(j) := j;
|
|
ELSE
|
|
table_tab1(j) := 4 - j;
|
|
END IF;
|
|
|
|
table_tab2(i)(j) := table_tab1(j);
|
|
DBMS_OUTPUT.PUT_LINE ('table_tab2('||i||')('||j||'): '||
|
|
table_tab2(i)(j));
|
|
END LOOP;
|
|
END LOOP;
|
|
END;
|
|
/
|
|
|
|
--Es werden in die Zahlen ein bis drei und dann drei bis eins ausgegeben.
|
|
|
|
--Aufgabe 5
|
|
DECLARE
|
|
TYPE table_type1 IS TABLE OF INTEGER --associative array
|
|
INDEX BY BINARY_INTEGER;
|
|
|
|
TYPE table_type2 IS TABLE OF TABLE_TYPE1; --nested Table
|
|
|
|
table_tab1 table_type1;
|
|
table_tab2 table_type2 := table_type2();
|
|
|
|
counter Number(4) := 1;
|
|
BEGIN
|
|
FOR i IN 1..2 LOOP
|
|
FOR j IN 1..3 LOOP
|
|
IF i = 1 THEN
|
|
table_tab1(j) := j;
|
|
ELSE
|
|
table_tab1(j) := 4 - j;
|
|
END IF;
|
|
|
|
table_tab2.extend;
|
|
table_tab2(i)(j) := table_tab1(j);
|
|
DBMS_OUTPUT.PUT_LINE ('table_tab2('||i||')('||j||'): '||
|
|
table_tab2(i)(j));
|
|
|
|
END LOOP;
|
|
END LOOP;
|
|
END;
|
|
/
|
|
|
|
--Aufgabe 6
|
|
DECLARE
|
|
TYPE varray_type IS VARRAY(3) OF INTEGER;
|
|
|
|
TYPE nested_table_type IS TABLE OF varray_type;
|
|
|
|
nested_table nested_table_type := nested_table_type();
|
|
|
|
BEGIN
|
|
FOR i IN 1..2 LOOP
|
|
nested_table.EXTEND;
|
|
nested_table(i) := varray_type();
|
|
|
|
FOR j IN 1..3 LOOP
|
|
IF i = 1 THEN
|
|
nested_table(i).EXTEND;
|
|
nested_table(i)(j) := j;
|
|
ELSE
|
|
nested_table(i).EXTEND;
|
|
nested_table(i)(j) := 4 - j;
|
|
END IF;
|
|
DBMS_OUTPUT.PUT_LINE('nested_table(' || i || ')(' || j || '): ' || nested_table(i)(j));
|
|
END LOOP;
|
|
END LOOP;
|
|
END;
|
|
/
|
|
|
|
--Aufgabe 7
|
|
DECLARE
|
|
CURSOR c_instructor IS SELECT FIRST_NAME, LAST_NAME, SALUTATION FROM INSTRUCTOR;
|
|
|
|
TYPE type_instructor IS TABLE OF VARCHAR2(100)
|
|
INDEX BY BINARY_INTEGER;
|
|
|
|
instructor_varray type_instructor;
|
|
|
|
counter Number(10) := 0;
|
|
BEGIN
|
|
FOR rec_instructor IN c_instructor LOOP
|
|
counter := counter + 1;
|
|
instructor_varray(counter) := 'name(' || counter || '): ' || rec_instructor.SALUTATION || ' ' || rec_instructor.FIRST_NAME || ' ' || rec_instructor.LAST_NAME;
|
|
DBMS_OUTPUT.PUT_LINE(instructor_varray(counter));
|
|
END LOOP;
|
|
END;
|
|
/ |