2017-07-26 37 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

更新されたクエリを使用してください –

関連する問題