User Tools

Site Tools


kurs:nested_table_als_column_type

This is an old revision of the document!


CREATE OR REPLACE 
TYPE ausbildung
 AS TABLE OF VARCHAR2(100)
CREATE TABLE "HR"."KURSTEILNEHMER" 
  ("ID" NUMBER, 
   "NAME" VARCHAR2(100), 
   "AUSBILDUNG" "HR"."AUSBILDUNG" 
  ) NESTED TABLE ausbildung STORE AS store_ausbildung
CREATE SEQUENCE  "HR"."S";
PROCEDURE teilnehmer_ausbildung (
  p_name VARCHAR2,
  p_add_ausbildung VARCHAR2)
IS
    t_ausbildung   ausbildung := ausbildung();
    c              INTEGER;
    f              BOOLEAN := FALSE;
    al             number;
BEGIN
    SELECT   COUNT (id)
      INTO   c
      FROM   kursteilnehmer
     WHERE   name = p_name;

    IF c = 0
    THEN
        INSERT INTO kursteilnehmer (id, name, ausbildung)
          VALUES   (s.NEXTVAL, p_name, ausbildung (p_add_ausbildung));
    ELSE
        SELECT   ausbildung
          INTO   t_ausbildung
          FROM   kursteilnehmer
         WHERE   name = p_name;

        FOR i IN 1 .. t_ausbildung.last
        LOOP
            IF t_ausbildung (i) = p_add_ausbildung
            THEN
                f := TRUE;
            END IF;
        END LOOP;

        IF f = FALSE
        THEN

            t_ausbildung.EXTEND;
            t_ausbildung (t_ausbildung.last) := p_add_ausbildung;

            UPDATE   kursteilnehmer
               SET   ausbildung = t_ausbildung
             WHERE   name = p_name;
        END IF;
    END IF;

   /* FOR i IN 1 .. t_ausbildung.LAST
    LOOP
        DBMS_OUTPUT.put_line (t_ausbildung (i));
    END LOOP;*/
END;                                                              -- Procedure
kurs/nested_table_als_column_type.1410376975.txt.gz · Last modified: 2014/11/11 14:52 (external edit)