sql >> データベース >  >> RDS >> Oracle

手順でテーブルを作成する

    DDLステートメントをPL/SQLブロックに直接書き込むことはできないため、たとえば、次のように記述します

    CREATE OR REPLACE PROCEDURE TABLERISIKO IS
    BEGIN
        drop table risiko;
        CREATE TABLE Risiko
        (
            RNr       INTEGER,
            Projekt       INTEGER,
            Text       VARCHAR(25),
            Gruppe       INTEGER,
            Auswirkung    INTEGER,
            WKeit       INTEGER,
            Pruefdatum    DATE,
            PRIMARY KEY    (RNr),
            CONSTRAINT FKRisiko1 FOREIGN KEY (Projekt)
            REFERENCES Projekt(ProNr),
            CONSTRAINT FKRisiko2 FOREIGN KEY (Gruppe)
            REFERENCES Risikogruppe (RGNr),
            CONSTRAINT PosAuswirkung CHECK(Auswirkung >=0),
            CONSTRAINT WKeitProzent CHECK(WKeit>=0 AND WKeit<=100)
        );
        INSERT INTO Risiko VALUES(1,1,'Anforderungenunklar',1,50000,30 ,TO_DATE('25.01.06','DD.MM.YY'));
        INSERT INTO Risiko VALUES(2,1,'Abnahmeprozess offen',2,30000,70 ,TO_DATE('26.02.06','DD.MM.YY'));
        INSERT INTO Risiko VALUES(3,2,'Ansprechpartner wechseln',1,20000,80 ,TO_DATE('06.05.06','DD.MM.YY'));
        INSERT INTO Risiko VALUES(4,2,'neue Entwicklungsumgebung',3,40000,20 ,TO_DATE('05.10.06','DD.MM.YY'));
    END;
    

    動作しませんが、

    CREATE OR REPLACE PROCEDURE TABLERISIKO IS
    BEGIN
        execute immediate 'drop table risiko';
        execute immediate 'CREATE TABLE Risiko
        (
            RNr       INTEGER,
            Projekt       INTEGER,
            Text       VARCHAR(25),
            Gruppe       INTEGER,
            Auswirkung    INTEGER,
            WKeit       INTEGER,
            Pruefdatum    DATE,
            PRIMARY KEY    (RNr),
            CONSTRAINT FKRisiko1 FOREIGN KEY (Projekt)
            REFERENCES Projekt(ProNr),
            CONSTRAINT FKRisiko2 FOREIGN KEY (Gruppe)
            REFERENCES Risikogruppe (RGNr),
            CONSTRAINT PosAuswirkung CHECK(Auswirkung >=0),
            CONSTRAINT WKeitProzent CHECK(WKeit>=0 AND WKeit<=100)
        )';
        execute immediate '
            INSERT INTO Risiko VALUES(1,1,||'''||'Anforderungenunklar'||'''||,1,50000,30 ,TO_DATE(||'''||'25.01.06'||'''||,||'''||'DD.MM.YY'||'''||));
            INSERT INTO Risiko VALUES(2,1,||'''||'Abnahmeprozess offen'||'''||,2,30000,70 ,TO_DATE(||'''||'26.02.06'||'''||,||'''||'DD.MM.YY'||'''||));
            INSERT INTO Risiko VALUES(3,2,||'''||'Ansprechpartner wechseln'||'''||,1,20000,80 ,TO_DATE(||'''||'06.05.06'||'''||,||'''||'DD.MM.YY'||'''||));
            INSERT INTO Risiko  VALUES(4,2,||'''||'neue Entwicklungsumgebung'||'''||,3,40000,20 ,TO_DATE(||'''||'05.10.06'||'''||,||'''||'DD.MM.YY'||'''||))';
        commit;
    END;
    

    正常に実行されます。



    1. リモートSQLデータベースへのAndroidアクセス

    2. 左外部結合は、左のテーブルからすべての行を返さないのですか?

    3. MySQLロールバッククエリ

    4. AzureSQLデータベースの自動チューニング