Mysql 如何使用存储过程从表中插入、更新数据
若我在两个不同的存储过程名称中使用一个表(一个用于insert,一个用于update命令),它将显示语法错误 首先,我创建了studentrc SP: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
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 $$