我有一张桌子:
CREATE TABLE `student` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(100) NOT NULL,
`score` int(11) NOT NULL,
PRIMARY KEY (`id`)
现在我想创建一个存储过程,将新列插入到该表中,其中包含下一个id(自动创建),name(我将编写的值)和score(我将写入)。
我试过了
DELIMITER ;;
CREATE PROCEDURE insertStudent (IN ime varchar(100),IN score int(11))
BEGIN
insert into student (name,score) values (in_score,in_score);
END
;;
但它似乎无法奏效。
我知道这是基本的,但我需要帮助。
答案 0 :(得分:1)
您是否正在插入列或行?看起来你正试图插入一行,这更常规。
至于“似乎不起作用”,我想你从数据库中收到错误。这个错误是什么?我猜它会与查询中的未知标识符或语法错误有关。看看您的程序声明:
insertStudent (IN ime varchar(100),IN score int(11))
并在您的询问中:
insert into student (name,score) values (in_score,in_score);
查询中的in_score
是什么?你从哪里得到的?你有几个问题:
in_score
永远不会被定义,而是您拥有名为ime
和score
IN
和int(11)
对我来说很可疑。也许您的查询 应该是这样的?:
insert into student (name,score) values (ime,score);
至少,即使它不起作用,可能会改变您所看到的错误消息。这将是朝着正确方向迈出的一步。此时继续检查错误消息以帮助调试错误。
答案 1 :(得分:0)
CREATE PROCEDURE insertStudent @ime varchar(100),score int
as
BEGIN
insert into student
values (@a1, @a2);
END
您忘记将@
放在参数前面,而无需使用in
忘了放as