【问题标题】:Create an Store Procedure for Insert-Update in Mysql在 Mysql 中为插入更新创建存储过程
【发布时间】:2013-11-02 21:22:07
【问题描述】:

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

我的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 ;

【问题讨论】:

    标签: mysql stored-procedures insert


    【解决方案1】:

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

    另外,您的一项测试介于 id_setup 和 id_setup 之间。它应该在 id_setup 和 i_id_setup 之间。

    【讨论】:

    • 哇,这么简单,非常感谢,效果很好。我有几个小时在这闲逛。星期六你救了我!
    • NP,欢迎来到 SO!请记住对您喜欢的任何答案进行投票,如果您同意,请勾选最佳答案的已接受答案。
    【解决方案2】:

    如果您想创建更新存储过程,请在 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 的名称和薪水。现在你使用。

    【讨论】:

      猜你喜欢
      • 2022-07-30
      • 1970-01-01
      • 2011-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多