SQL语法错误创建存储过程

时间:2012-07-02 09:44:18

标签: mysql stored-procedures

我正在创建一个小的(现在)存储过程来插入一些数据。当我创建这个时,我得到一个错误。

DROP PROCEDURE IF EXISTS InsertTESTData;
delimiter $$
CREATE PROCEDURE InsertTESTData (
p_pink_no VARCHAR,
p_carrier VARCHAR,
p_thisno INT
)
BEGIN
INSERT INTO RefDB (pink_no,carrier,thisno) 
    VALUES 
(p_pink_no,p_carrier,p_thisno);
END $$
delimiter ;

我总是得到的错误是1064 SQL错误,如下所示。

Error : 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 'p_carrier VARCHAR,p_thisno IN) BEGIN INSERT INTO RefDB (pink_no,carrier,t' at line 2

我以为我把所有东西都遮住了,现在我把头发拉出来了!

2 个答案:

答案 0 :(得分:0)

您需要定义varchar参数的长度,例如

p_pink_no VARCHAR(100)

并更改

p_thisno IN

p_thisno INT

完整示例:

DROP PROCEDURE IF EXISTS InsertTESTData;
delimiter $$
CREATE PROCEDURE InsertTESTData (
    p_pink_no VARCHAR(100),
    p_carrier VARCHAR(100),
    p_thisno INT)
BEGIN
    INSERT INTO RefDB (pink_no,carrier,thisno) 
    VALUES (p_pink_no,p_carrier,p_thisno);
END $$
delimiter ;

答案 1 :(得分:-1)

你必须声明数据类型的大小,我确定你的代码将成功执行。 按照这个

DROP PROCEDURE IF EXISTS InsertTESTData;
delimiter $$
CREATE PROCEDURE InsertTESTData (
    p_pink_no VARCHAR(20),
    p_carrier VARCHAR(200),
    p_thisno number(23))
BEGIN
    INSERT INTO RefDB (pink_no,carrier,thisno) 
    VALUES (p_pink_no,p_carrier,p_thisno);
END $$
delimiter ;