我正在尝试创建一个程序(将一个新的类名,类型,国家,枪支数量,钻孔和位移作为参数。将此信息添加到类中,并将带有类名的船添加到船上)
关系:
classes(class, type, country, numGuns, bore, displacement)
ships(name, class, launched)
mysql> CREATE PROCEDURE addClass(in VARCHAR(50) inClassName, in VARCHAR(5) inType, in
VARCHAR(50) inCountry, in INT inNumGuns, in INT inBore, in INT inDis)
-> begin
-> INSERT INTO classes VALUES(inClassName, inType, inCountry, inNumGuns, inBore, inDis);
-> INSERT INTO ships VALUES(inClassName, inClassName, NULL);
-> end
-> //
ERROR 1064 (42000): 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 'VARCHAR(50)
inClassName, in VARCHAR(50) inType, in VARCHAR(50) inCountry, in INT' at line 1
我不确定这个错误的来源,有人可以帮忙吗?
答案 0 :(得分:1)
输入变量名称在它们的数据类型之前,而不是在您指定它们之后:
CREATE PROCEDURE addClass(
in inClassName VARCHAR(50),
in inType VARCHAR(5) ,
in inCountry VARCHAR(50),
in inNumGuns INT,
in inBore INT,
in inDis INT
)
BEGIN
INSERT INTO classes VALUES(inClassName, inType, inCountry, inNumGuns, inBore, inDis);
INSERT INTO ships VALUES(inClassName, inClassName, NULL);
END
From the CREATE PROCEDURE
docs,规范看起来像
proc_parameter:
[ IN | OUT | INOUT ] param_name type
答案 1 :(得分:0)
更正语法。这是一个例子:
delimiter //
CREATE PROCEDURE addClass(in inClassName VARCHAR(50),
in inType VARCHAR(5), in inCountry VARCHAR(50),
in inNumGuns INT, in inBore INT, in inDis INT)
begin
INSERT INTO classes VALUES(inClassName, inType, inCountry, inNumGuns, inBore, inDis);
INSERT INTO ships VALUES(inClassName, inClassName, NULL);
end//
delimiter ;