Mysql 如何使用存储过程从表中插入、更新数据

Mysql 如何使用存储过程从表中插入、更新数据,mysql,swing,Mysql,Swing,若我在两个不同的存储过程名称中使用一个表(一个用于insert,一个用于update命令),它将显示语法错误 首先,我创建了studentrc SP: delimiter // create procedure studentrc(in student_name varchar(20),in Reg_no int(6),in mark1 int(3), in mark2 int(3),in total int(10)) begin insert into studentrecords value

若我在两个不同的存储过程名称中使用一个表(一个用于insert,一个用于update命令),它将显示语法错误

首先,我创建了studentrc SP:

delimiter //
create procedure studentrc(in student_name varchar(20),in Reg_no int(6),in mark1 int(3), in mark2 int(3),in total int(10))
begin
insert into studentrecords values(student_name,Reg_no,mark1,mark2,total);
end; //
没有错误

接下来,我创建studentrcs SP:

delimiter //
create procedure studentrcs(inout Reg_no int(6))
begin
UPDATE studentrecords
set student_name=?,mark1=?,mark2=?,total=?
where Reg_no=?;
end;//
您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解使用“UPDATE studentrecords”附近的正确语法 设置学生名称=?,标记1=?,标记2=?,总计=? 其中第3行的Reg_no='


如何纠正此错误…

我将首先承认我无论如何都不是SQL专家,但您不应该引入更多变量并使用它们来代替问号吗?

您需要将新闻值放入args列表中

 create procedure studentrcs(sname varchar(100),m1 varchar(100),m2 varchar(100),total int,inout Reg_noarg int(6))
 begin
 UPDATE studentrecords
 set student_name=sname ,mark1=m1,mark2=m2,total=totalarg
 where Reg_no=Reg_noarg ;
对于“插入”

我在参数中给出的大小应该等于表中的字段大小

用于“更新”

我在参数中给出的大小应该等于表中的字段大小

希望这能对你有所帮助

DELIMITER $$
DROP PROCEDURE IF EXISTS `mydatabase`.`myprocedurename` $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `myprocedurename`(IN field1 VARCHAR(50),
IN field2 INT(10),IN field3 INT(10), IN field4 VARCHAR(10))
BEGIN
INSERT INTO mytablename (FIELD_1,FIELD_2,FIELD_3,FIELD_4) VALUES 
(field1,field2,field3,field4);
END $$ 
DELIMITER ;
DELIMITER $$
DROP PROCEDURE IF EXISTS `mydatabase`.`myprocedurename` $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `myprocedurename`(IN field1 VARCHAR(50),
IN field2 INT(10) )
BEGIN
UPDATE mytablename  SET FIELD_1=filed1 WHERE  FIELD_2=field2;
END $$