在MySQL中创建过程时出错

问题描述:

在以下查询中出现错误的可能性有多大?在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我错误地判断了错误。现在它被编辑了。 –

你创建程序查询有错误在任线,在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

完成编辑并更改了报价类型。但仍然有同样的错误。 –

请使用更新的查询

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

请使用最新的查询 –