2016-07-05 9 views
0

ERDを作成してPL/SQLコードを取得するためにオンライン・プラットフォームで作業していますが、次のコードがあります(下記参照)が、PL/SQLかどうかはわかりません。 私は、このコードは、PL/SQLであるかないかどうかを確認する必要があります。PL/SQL構文の問題

CREATE TABLE "CATEGORY" (
    "ID" NUMBER(10) PRIMARY KEY, 
    "THLEVEL" NUMBER(10) NOT NULL 
); 

CREATE SEQUENCE "CATEGORY_SEQ" NOCACHE; 

CREATE TRIGGER "CATEGORY_BI" 
    BEFORE INSERT ON "CATEGORY" 
    FOR EACH ROW 
BEGIN 
    IF :NEW."ID" IS NULL THEN 
    SELECT "CATEGORY_SEQ".NEXTVAL INTO :NEW."ID" FROM DUAL; 
    END IF; 
END;; 

CREATE TABLE "REPORT" (
    "ID" NUMBER(10) PRIMARY KEY, 
    "CLIENT" CLOB NOT NULL, 
    "VERSION" NUMBER(10) NOT NULL 
); 

CREATE SEQUENCE "REPORT_SEQ" NOCACHE; 

CREATE TRIGGER "REPORT_BI" 
    BEFORE INSERT ON "REPORT" 
    FOR EACH ROW 
BEGIN 
    IF :NEW."ID" IS NULL THEN 
    SELECT "REPORT_SEQ".NEXTVAL INTO :NEW."ID" FROM DUAL; 
    END IF; 
END;; 

CREATE TABLE "ASSET" (
    "ID" NUMBER(10) PRIMARY KEY, 
    "REPORT" NUMBER(10) NOT NULL, 
    "IP" VARCHAR2(1000 CHAR) NOT NULL, 
    "NAME" VARCHAR2(1000 CHAR) 
); 

CREATE INDEX "IDX_ASSET__REPORT" ON "ASSET" ("REPORT"); 

ALTER TABLE "ASSET" ADD CONSTRAINT "FK_ASSET__REPORT" FOREIGN KEY ("REPORT") REFERENCES "REPORT" ("ID"); 

CREATE SEQUENCE "ASSET_SEQ" NOCACHE; 

CREATE TRIGGER "ASSET_BI" 
    BEFORE INSERT ON "ASSET" 
    FOR EACH ROW 
BEGIN 
    IF :NEW."ID" IS NULL THEN 
    SELECT "ASSET_SEQ".NEXTVAL INTO :NEW."ID" FROM DUAL; 
    END IF; 
END;; 

CREATE TABLE "SOLUTION" (
    "ID" NUMBER(10) PRIMARY KEY, 
    "IMPLEVEL" VARCHAR2(1000 CHAR) NOT NULL, 
    "DIFFICULTY" VARCHAR2(1000 CHAR) NOT NULL, 
    "DESCRIPTION" CLOB NOT NULL 
); 

CREATE SEQUENCE "SOLUTION_SEQ" NOCACHE; 

CREATE TRIGGER "SOLUTION_BI" 
    BEFORE INSERT ON "SOLUTION" 
    FOR EACH ROW 
BEGIN 
    IF :NEW."ID" IS NULL THEN 
    SELECT "SOLUTION_SEQ".NEXTVAL INTO :NEW."ID" FROM DUAL; 
    END IF; 
END;; 

CREATE TABLE "VULNERABILITY" (
    "ID" VARCHAR2(1000 CHAR) PRIMARY KEY, 
    "ASSET" NUMBER(10) NOT NULL, 
    "SOLUTION" NUMBER(10) NOT NULL, 
    "CATEGORY" NUMBER(10) NOT NULL, 
    "CVE" VARCHAR2(1000 CHAR), 
    "DATE" TIMESTAMP NOT NULL, 
    "LOCATION" CLOB NOT NULL 
); 

CREATE INDEX "IDX_VULNERABILITY__ASSET" ON "VULNERABILITY" ("ASSET"); 

CREATE INDEX "IDX_VULNERABILITY__CATEGORY" ON "VULNERABILITY" ("CATEGORY"); 

CREATE INDEX "IDX_VULNERABILITY__SOLUTION" ON "VULNERABILITY" ("SOLUTION"); 

ALTER TABLE "VULNERABILITY" ADD CONSTRAINT "FK_VULNERABILITY__ASSET" FOREIGN KEY ("ASSET") REFERENCES "ASSET" ("ID"); 

ALTER TABLE "VULNERABILITY" ADD CONSTRAINT "FK_VULNERABILITY__CATEGORY" FOREIGN KEY ("CATEGORY") REFERENCES "CATEGORY" ("ID"); 

ALTER TABLE "VULNERABILITY" ADD CONSTRAINT "FK_VULNERABILITY__SOLUTION" FOREIGN KEY ("SOLUTION") REFERENCES "SOLUTION" ("ID"); 

CREATE TABLE "EXPLOIT" (
    "ID" NUMBER(10) PRIMARY KEY, 
    "VULNERABILITY" VARCHAR2(1000 CHAR) NOT NULL, 
    "NAME" VARCHAR2(1000 CHAR) NOT NULL, 
    "TYPE" CLOB NOT NULL, 
    "DESCRIPTION" CLOB NOT NULL 
); 

CREATE INDEX "IDX_EXPLOIT__VULNERABILITY" ON "EXPLOIT" ("VULNERABILITY"); 

ALTER TABLE "EXPLOIT" ADD CONSTRAINT "FK_EXPLOIT__VULNERABILITY" FOREIGN KEY ("VULNERABILITY") REFERENCES "VULNERABILITY" ("ID"); 

CREATE SEQUENCE "EXPLOIT_SEQ" NOCACHE; 

CREATE TRIGGER "EXPLOIT_BI" 
    BEFORE INSERT ON "EXPLOIT" 
    FOR EACH ROW 
BEGIN 
    IF :NEW."ID" IS NULL THEN 
    SELECT "EXPLOIT_SEQ".NEXTVAL INTO :NEW."ID" FROM DUAL; 
    END IF; 
END; 

だから、このPL/SQLがあるか、Oracleから他のsomethinのですか?これはPL/SQLでどのように聞こえるでしょうか?

+0

はいこれはPLSQLです –

+1

';;'はPL/SQLブロックを終了するのに間違っています。詳細についてはこちらを参照してください:http://stackoverflow.com/questions/1079949/when-do-i-need-to-use-a-semicolon-vs-a-slash-in-oracle-sql/10207695#10207695それは有効なSQL(DDL)とPL/SQL(トリガ)のように見えます –

答えて