Create table in Procedure

前端 未结 4 951
旧时难觅i
旧时难觅i 2020-12-12 00:48

I have created the table \"Risiko\" which shouldntbe dynamic, i tought it would be that simple but it was not. How should i solve it? and what am i doing wrong?



        
4条回答
  •  不知归路
    2020-12-12 01:31

    CREATE OR REPLACE PROCEDURE TABLERISIKO ( in_table_name     user_tables.table_name%TYPE) IS
      l_table_exists PLS_INTEGER;
      l_table_name user_tables.table_name%TYPE;
    BEGIN
      l_table_name := 'RISIKO';
    
      SELECT COUNT ( *)
      INTO l_table_exists
      FROM user_tables
      WHERE table_name = l_table_name;
    
      IF l_table_exists = 1 THEN
        EXECUTE IMMEDIATE 'DROP TABLE ' || l_table_name;
      END IF;
    
      EXECUTE IMMEDIATE
        'CREATE TABLE ' || l_table_name || '
          (
          RNr       INTEGER,
          Projekt       INTEGER,
          Text       VARCHAR(25),
          Gruppe       INTEGER,
          Auswirkung    INTEGER,
          WKeit       INTEGER,
          Pruefdatum    DATE,
          PRIMARY KEY   (RNr),
          CONSTRAINT FK' || l_table_name || '1 FOREIGN KEY (Projekt)
          REFERENCES Projekt(ProNr),
          CONSTRAINT FK' || l_table_name || '2 FOREIGN KEY (Gruppe)
          REFERENCES ' || l_table_name || 'gruppe (RGNr),
          CONSTRAINT PosAuswirkung CHECK(Auswirkung >=0),
          CONSTRAINT WKeitProzent CHECK(WKeit>=0 AND WKeit<=100)
          )';
    
      EXECUTE IMMEDIATE 'INSERT INTO ' || l_table_name || ' VALUES (1, 1, ''Anforderungenunklar'', 1, 50000, 30, TO_DATE ( ''25.01.06'', ''DD.MM.YY2''))';
    
      EXECUTE IMMEDIATE 'INSERT INTO ' || l_table_name || ' VALUES (2, 1, ''Abnahmeprozess offen'', 2, 30000, 70, TO_DATE ( ''26.02.06'', ''DD.MM.YY''))';
    
      EXECUTE IMMEDIATE 'INSERT INTO ' || l_table_name || ' VALUES (3, 2, ''Ansprechpartner wechseln'', 1, 20000, 80, TO_DATE ( ''06.05.06'', ''DD.MM.YY''))';
    
      EXECUTE IMMEDIATE 'INSERT INTO ' || l_table_name || ' VALUES (4, 2, ''neue Entwicklungsumgebung'', 3, 40000, 20, TO_DATE ( ''05.10.06'', ''DD.MM.YY''))';
    
      COMMIT;
    END;
    
    BEGIN
      TABLERISIKO ( 'RISKO');
    END;
    
    SELECT * FROM risko;
    

提交回复
热议问题