简体   繁体   English

SQL语法错误创建存储过程

[英]SQL Syntax error creating stored procedure

I am creating a small (for now) stored procedure to insert some data. 我正在创建一个小的(暂时)存储过程来插入一些数据。 When I create this I get an error. 创建此文件时,出现错误。

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 ;

And the error I always get is a 1064 SQL error as follows. 我总是得到的错误是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 

I thought I had everything covered and am now pulling my hair out! 我以为我已经把一切都遮盖了,现在正在拔头发!

You need to define a length for your varchar parameters like this 您需要像这样定义varchar参数的长度

p_pink_no VARCHAR(100)

and change 并改变

p_thisno IN

to

p_thisno INT

Complete example: 完整的例子:

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 ;

you have to declare the size of the data type ,after thal i am sure your code will be execute successfully. 您必须声明数据类型的大小,然后我确定您的代码将成功执行。 follow this 跟随这个

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 ;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM