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 PROCEDUREdocsから、仕様は次のようになります

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 に答える