2012-04-11 32 views
0

我創造了這個表:的Oracle SQL語法錯誤

CREATE TABLE diagnosis(
    diag_id NUMBER(8), 
    SCT_CODE CHAR(10), 
    diag_date DATE NOT NULL, 
    GP_ID CHAR(5), 
    PHN CHAR(5), 
    Rx CHAR(3), 
    CONSTRAINT diagnosis_PK PRIMARY KEY (diag_id, SCT_CODE), 
    CONSTRAINT diagnosis_FK4 FOREIGN KEY (SCT_CODE) 
    REFERENCES symptom (SCT_CODE) ON DELETE CASCADE, 
    CONSTRAINT diagnosis_FK1 FOREIGN KEY (GP_ID) 
    REFERENCES GP (GP_ID) ON DELETE CASCADE, 
    CONSTRAINT diagnosis_FK2 FOREIGN KEY (PHN) 
    REFERENCES Patient (PHN) ON DELETE CASCADE, 
    CONSTRAINT diagnosis_FK3 FOREIGN KEY (Rx) 
    REFERENCES drug (Rx) 
    ON DELETE CASCADE); 

我已經試過這兩種方法來填充表,它不工作。請幫助我的語法錯誤

INSERT ALL 
    INTO DIAGNOSIS VALUES ('10000001', '38341003', '04-APR-12', ‘GP001’, ‘p1001’, ‘Rx1’) 
    INTO DIAGNOSIS VALUES ('10000002', '423430007', '07-APR-12', ‘GP001’, ‘p1001’, ‘Rx1’) 
    INTO DIAGNOSIS VALUES ('10000003', '371032004', '05-APR-12', ‘GP002’, ‘p1002’, ‘Rx2’) 
    INTO DIAGNOSIS VALUES ('10000004', '38341003', '08-APR-12', ‘GP003’, ‘p1003’, ‘Rx1’) 
    INTO DIAGNOSIS VALUES ('10000005', '73211009', '07-APR-12', ‘GP003’, ‘p1003’, ‘Rx3’) 
    INTO DIAGNOSIS VALUES ('10000006', '73211009', '06-APR-12', ‘GP004’, ‘p1004’, ‘Rx3’) 
    INTO DIAGNOSIS VALUES ('10000007', '38341003', '10-APR-12', ‘GP001’, ‘p1005’, ‘Rx1’) 
    SELECT * FROM DUAL; 

/* Populate Diagnosis Table */ 

INSERT INTO Diagnosis(diag_id, SCT_CODE, diag_date, GP_ID, PHN, Rx) 
    VALUES ('10000001', ‘38341003’, '04-Apr-12', 'GP001', 'p1001', 'Rx1'); 
INSERT INTO Diagnosis(diag_id, SCT_CODE, diag_date, GP_ID, PHN, Rx) 
    VALUES ('10000002', ‘423430007’, '07-Apr-12', 'GP001', 'p1001', 'Rx1'); 
INSERT INTO Diagnosis(diag_id, SCT_CODE, diag_date, GP_ID, PHN, Rx) 
    VALUES ('10000003', ‘371032004’, '05-Apr-12', 'GP003', 'p1002', 'Rx2'); 
INSERT INTO Diagnosis(diag_id, SCT_CODE, diag_date, GP_ID, PHN, Rx) 
    VALUES ('10000004', ‘38341003’, '08-Apr-12', 'GP003', 'p1003', 'Rx1'); 
INSERT INTO Diagnosis(diag_id, SCT_CODE, diag_date, GP_ID, PHN, Rx) 
    VALUES ('10000005’, ‘73211009’, '07-Apr-12', 'GP003', 'p1003', 'Rx3'); 
INSERT INTO Diagnosis(diag_id, SCT_CODE, diag_date, GP_ID, PHN, Rx) 
    VALUES ('10000006', ‘73211009’, '06-Apr-12', 'GP004', 'p1004', 'Rx3'); 
INSERT INTO Diagnosis(diag_id, SCT_CODE, diag_date, GP_ID, PHN, Rx) 
    VALUES ('10000006', ‘38341003’, '10-Apr-12', 'GP001', 'p1005', 'Rx1'); 
+0

你得到了什麼錯誤信息? – Marc 2012-04-11 02:07:02

+2

歡迎來到StackOverflow。請不要在你的問題中使用「緊急」和「直接」等字樣。你的問題雖然對你很重要,但並不比別人發佈的問題更迫切或重要。如果您的問題緊急而迫不及待,請聘請顧問立即關注。否則,在沒有戲劇和懇求的情況下問這裏,人們會盡快幫助你。另外,如果你需要幫助,你需要清楚地說明問題。你說「語法幫助」,但不要提供任何錯誤信息,以幫助人們幫助你,浪費時間,而人們會問你細節。 – 2012-04-11 02:26:12

+2

如果這是一個剪切和粘貼(格式化之前),然後注意錯誤的引號字符搞砸(例如:'GP001',而不是'GP001') – Glenn 2012-04-11 02:27:43

回答

4

正如評論者(@Glenn)所說,您的問題很可能是單引號的使用非常不一致。

這兩項工作:

INSERT ALL 
    INTO DIAGNOSIS VALUES 
     ('10000001', '38341003', '04-APR-12', 'GP001', 'p1001', 'Rx1') 
    INTO DIAGNOSIS VALUES 
     ('10000002', '423430007', '07-APR-12', 'GP001', 'p1001', 'Rx1') 
SELECT * FROM DUAL; 

INSERT INTO Diagnosis(diag_id, SCT_CODE, diag_date, GP_ID, PHN, Rx) 
    VALUES ('10000003', '371032004', '05-Apr-12', 'GP003', 'p1002', 'Rx2'); 
INSERT INTO Diagnosis(diag_id, SCT_CODE, diag_date, GP_ID, PHN, Rx) 
    VALUES ('10000004', '38341003', '08-Apr-12', 'GP003', 'p1003', 'Rx1'); 

,所有我已經做了,並經歷了和確信'總是使用。

看到這個sqlfiddle:(這裏我已經刪除了限制,因爲我不想要鍵入所有)http://sqlfiddle.com/#!4/c824d/1

雖然,我個人一直不喜歡第一種方法,因爲這似乎select * from dual任意如此(是的,我知道它可行 - 這更多的是一個美學問題。)

+0

感謝您的幫助,這是一個缺少報價。 – user1325466 2012-04-11 03:38:54

+1

不客氣 - 現在,在StackOverflow中,感謝的方式是將答案標記爲有用和/或接受答案。 (如果我可以分享w/@Glenn,我會。) – 2012-04-11 04:14:41