2017-07-26 86 views
0

在以下查詢中出現錯誤的可能性有多大?在MySQL中創建過程時出錯

DELIMITER $$ 
CREATE PROCEDURE `tbl_assessment_notes`(
    `var_reason` VARCHAR, 
    'var_attr2' VARCHAR, 
    'var_note' VARCHAR 
) 
BEGIN 
    IF EXISTS 
    (
    SELECT 
     * 
    FROM 
     tbl_assessment_notes 
    WHERE 
     reason = var_reason AND attr2 = var_attr2 
) THEN 
UPDATE 
    tbl_assessment_notes 
SET 
    note = CONCAT(note, var_note), 
    TIMESTAMP = 'CURRENT_TIMESTAMP' 
WHERE 
    attr1 = var_attr1 AND reason = var_reason ELSE 
INSERT 
INTO 
    tbl_assessment_notes(
    pk_assess_note_id, 
    attr2, 
    attr3, 
    reason, 
    note, 
    TIMESTAMP 
) 
VALUES(
    NULL, 
    var_attr2, 
    NULL, 
    'confirmation', 
    var_note, 
    'CURRENT_TIMESTAMP' 
) ; 
END IF ; 
END $$ 
DELIMITER ; 

,我發現了以下錯誤:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' 
    'var_reason' VARCHAR, 
    'var_attr2' VARCHAR, 
    `var_note` VARCHAR, 
    'var' at line 2 

基本上我想要做的是,如果它存在,否則創建一個新的行和值插入它來更新行。

+0

什麼是錯誤訊息? (附加到問題) –

+0

其中是代碼包含var_attr1'VARCHAR, 'var_attr2'VARCHAR, var_title' VARCHAR,'你的代碼中沒有這樣的代碼。 –

+0

@ManojShukla Sry我錯誤地判斷了錯誤。現在它被編輯了。 –

回答

0

你創建程序查詢有錯誤在任線,在N2

CREATE PROCEDURE `tbl_assessment_notes`(// line N1 
    `var_reason` VARCHAR, // line N1 
    'var_attr2' VARCHAR, // line N2 
    'var_note' VARCHAR, // line N2 - first of all remove last comma from here. 
) 

改變單引號(')到(')。 這是因爲utf字符的標準。

它更改爲...

CREATE PROCEDURE `tbl_assessment_notes`(
`var_reason` VARCHAR, 
`var_attr2` VARCHAR, 
`var_note` VARCHAR //also don't forget to remove comma from here.. 
) 
+0

完成編輯並更改了報價類型。但仍然有同樣的錯誤。 –

0

請使用更新的查詢

DELIMITER $$ 
CREATE PROCEDURE `tbl_assessment_notes` 
(var_reason VARCHAR(255), 
var_attr2 VARCHAR(255), 
var_note VARCHAR(255)) 
BEGIN 
IF EXISTS 
    (
    SELECT 
     * 
    FROM 
     tbl_assessment_notes 
    WHERE 
     reason = var_reason AND attr2 = var_attr2 ) THEN UPDATE tbl_assessment_notes SET note = CONCAT(note, var_note), TIMESTAMP 
= 'CURRENT_TIMESTAMP' WHERE attr1 = var_attr1 AND reason = var_reason ELSE INSERT INTO tbl_assessment_notes(
    pk_assess_note_id, 
    attr2, 
    attr3, 
    reason, 
    note, 
    TIMESTAMP) VALUES(NULL,var_attr2,NULL,'confirmation', var_note, 'CURRENT_TIMESTAMP') ; 
END IF ; 
END $$ 
DELIMITER ; 
+0

同樣的錯誤。 –

+0

請使用最新的查詢 –