如何处理插入,使用存储过程从表更新数据

时间:2011-12-21 07:07:26

标签: mysql swing

如果我在两个不同的存储过程名称中使用一个表(一个用于插入,一个用于更新命令),则显示语法错误。

首先我创建了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附近使用正确的语法 设置student_name =?,mark1 =?,mark2 = ?, total =? 其中Reg_no ='在第3行

如何纠正这个错误...

3 个答案:

答案 0 :(得分:0)

我会是第一个承认我不是SQL大师的人,但是你不应该接受更多变量并使用它们来代替问号吗?

答案 1 :(得分:0)

您需要将新闻值放在参数列表中

 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 ;

答案 2 :(得分:0)

代表“INSERT”

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 ;
我在IN参数中给出的

大小应该等于表

中的字段大小

表示“更新”

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 $$ 
我在IN参数中给出的

大小应该等于表

中的字段大小 希望这对你有所帮助。