如果我在两个不同的存储过程名称中使用一个表(一个用于插入,一个用于更新命令),则显示语法错误。
首先我创建了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行
如何纠正这个错误...
答案 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参数中给出的大小应该等于表
中的字段大小 希望这对你有所帮助。