2016-07-05 47 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?这将如何在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(触发器) –

回答