0

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

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

我以为我已经把所有东西都盖好了,现在我要把头发拉出来!

4

2 回答 2

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 ;
于 2012-07-02T09:47:34.880 回答
-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 ;
于 2014-09-26T07:13:06.967 回答