为什么我得到一个失踪的'结束'对于mysql存储过程

时间:2017-04-20 02:20:18

标签: mysql stored-procedures

一直试图弄清楚为什么这不是编译并给我一个错误。它必须是简单的东西。我有一个接受五个参数的SP,将描述设置为空字符串,将date_added设置为今天。想要调用sp并在表中插入一行。

这是我的代码:

delimiter //

create procedure insert_products 
(
    category_id_param       int,
    product_code_param      varchar(10),
    product_name_param      varchar(255),
    list_price_param        decimal(10,2),
    discount_percent_param  decimal(10,2)
)

begin
    declare description_var     text;
    declare date_added_var      datetime;

--validate parameters
if list_price_param < 0 then
    signal sqlstate '22003'
      set message_text = 'List price must be positive number',
      mysql_errno = 1264;

elseif discount_price_param < 0 then 
    signal sqlstate '22003'
        set message_text = 'Discount percent cannot be negative',
        mysql_errno = 1264;
end if;


--set variable
set description_var = '';
set date_added_var = now();

insert into products
    values(default, category_id_param, product_code_param,      
           product_name_param,description_var, list_price_param, 
           discount_percent_param, date_added_var);

end//

delimiter ;

call insert_products(33, 100, 'jet ski', 25.66, .30);

2 个答案:

答案 0 :(得分:2)

在评论中--之后添加空格。

--validate parameters

应该是这样的:

-- validate parameters

有关评论的更多信息 - Comment Syntax

答案 1 :(得分:-1)

尝试删除:

delimiter //

//
delimiter

还指定columnNames:

insert into products (column1,column2,column3,...)values()

第三种选择:

<强>从

end//

end;//