1

我正在尝试创建一个程序(将新的类名、类型、国家、枪支数量、口径和排水量作为参数。将此信息添加到类中,并将具有类名的船添加到船舶中)

关系:

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

我不确定这个错误的来源,有人可以帮忙吗?

4

2 回答 2

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

CREATE PROCEDURE文档中,规范看起来像

proc_parameter:
    [ IN | OUT | INOUT ] param_name type
于 2012-04-23T18:02:57.800 回答
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 ;
于 2012-04-23T18:07:35.633 回答