在Mysql中为插入更新创建存储过程

时间:2013-11-02 21:22:07

标签: mysql stored-procedures insert

我正在尝试创建一个存储过程来根据输入变量插入或更新记录。但是当我尝试编译SP时,只需告诉我以下内容:代码1064,您的SQL语法出错,请查看与您的MySQL服务器版本对应的手册,以便在第80行附近使用正确的语法。我还没有找到解决方案。非常感谢你给我的任何帮助。

我的SP代码如下:

DELIMITER $$

CREATE PROCEDURE `sp_sertup`(IN i_operation CHAR(1),
                        IN i_system VARCHAR(20),
                        IN i_subsystem VARCHAR(20),
                        IN i_ref VARCHAR(20),
                        IN i_significance VARCHAR(20),
                        IN i_rank VARCHAR(20),
                        IN i_implication VARCHAR(20),
                        IN i_loc1 VARCHAR(20),
                        IN i_loc2 VARCHAR(20),
                        IN i_task VARCHAR(20),
                        IN i_time VARCHAR(20),
                        IN i_cost1 VARCHAR(20),
                        IN i_cost2 VARCHAR(20),
                        IN i_note VARCHAR(20),
                        IN i_attach VARCHAR(20),
                        IN i_operation_text VARCHAR(20),
                        IN i_id_setup INT )

BEGIN
    IF  (i_operation = 'I') THEN
        UPDATE setup_gs SET setup_status  = 0 WHERE id_setup = id_setup; 

            INSERT INTO setup_gs(
                SystemLabel,
                SubsystemLabel,
                RefLabel,
                SignificanceLabel,
                RankLabel,
                ImplicationLabel,
                Location1Label,
                Location2Label,
                TaskLabel,
                TimeLabel,
                Cost1Label,
                Cost2Label,
                NoteLabel,
                attachmentText,
                OperationsText,
                setup_status
            ) 
            VALUES 
            (
                i_system,
                i_subsystem,
                i_ref,
                i_significance,
                i_rank,
                i_implication,
                i_loc1,
                i_loc2,
                i_task,
                i_time,
                i_cost1,
                i_cost2,
                i_note,
                i_attach,
                i_operation_text,
                1);

    IF (i_operation = 'U') THEN
        UPDATE
            setup_gs
        SET
            SystemLabel        = values(i_system),
            SubsystemLabel     = values(i_subsystem),
            RefLabel           = values(i_ref),
            SignificanceLabel  = values(i_significance),
            RankLabel          = values(i_rank),
            ImplicationLabel   = values(i_implication),
            Location1Label     = values(i_loc1),
            Location2Label     = values(i_loc2),
            TaskLabel          = values(i_task),
            TimeLabel          = values(i_time),
            Cost1Label         = values(i_cost1),
            Cost2Label         = values(i_cost2),
            NoteLabel          = values(i_note),
            attachmentText     = values(i_attach),
            OperationsText     = values(i_operation_text),
            setup_status       = 1
        WHERE id_setup           = i_id_setup;          
END $$
DELIMITER ;

2 个答案:

答案 0 :(得分:0)

您必须在MySQL中使用END IF完成IF-statements

此外,您的一个测试是在id_setup和id_setup之间。它应该在id_setup和i_id_setup之间。

答案 1 :(得分:-1)

如果要创建更新存储过程,请在mysql命令行中执行以下步骤。这是完美的工作。

create procedure procedure_name(id int, name varchar(40),salary float)
                        update table_name set name=name,salary=salary from id=id;

首先你需要创建一个表。之后写入关键字create procedure,然后在过程函数内写procedure_name(),写下列名。

我在过程中使用了idnamesalary,并在我编写简单查询update table_NAME set name=name, salary=salary where id=id之后提供了所有类型。因为我想更改此ID的名称和工资。现在你用。