mysql 中的1064_错误代码:mysql中的1064

我创建了一个应该执行某些操作的过程,但每次调用它时,

mysql都会出现错误,我不知道这意味着什么.我试图理解它是徒劳的,这里是存储过程对其进行操作的表结构:

CREATE TABLE `recruitment`.`job_seeker` (

`user_id` INT Null ,

`fname` VARCHAR(45) Null ,

`lname` VARCHAR(45) Null ,

`mname` VARCHAR(45) Null ,

`gender` VARCHAR(10) Null ,

`dob` DATE Null ,

`marital_status` VARCHAR(45) Null ,

`address` VARCHAR(45) Null ,

`city` VARCHAR(45) Null ,

`nationality` VARCHAR(45) Null ,

`phone` VARCHAR(45) Null ,

`mobile` VARCHAR(45) Null ,

`degree_id` INT Null ,

`education` VARCHAR(100) Null ,

`experience` VARCHAR(250) Null ,

`other` VARCHAR(250) Null ,

`job_target` VARCHAR(250) Null ,

PRIMARY KEY (`user_id`) ,

INDEX `user_id` (`user_id` ASC) ,

INDEX `degree_id` (`degree_id` ASC) ,

CONSTRAINT `user_id`

FOREIGN KEY (`user_id` )

REFERENCES `recruitment`.`user_authentication` (`user_id` )

ON DELETE NO ACTION

ON UPDATE NO ACTION,

CONSTRAINT `degree_id`

FOREIGN KEY (`degree_id` )

REFERENCES `recruitment`.`degree` (`degree_id` )

ON DELETE NO ACTION

ON UPDATE NO ACTION

);

这是存储过程:

DELIMITER $$

CREATE DEFINER=`root`@`localhost` PROCEDURE `createSeekerProfile`(in userName varchar(45),

in fn varchar(45),in mn varchar(45), in ln varchar(45),

in gender varchar(6),in nationality varchar(45),

in ad varchar(45),in city varchar(45),in phone varchar(15),in mob varchar(15),

in maritalStatus varchar(45), in degId int, in educ varchar(100),

in exper varchar(250), in other varchar(250),

in dob date,in jtarg varchar(250))

begin

declare returned_ID int;

set @dyn_que = CONCAT('select user_id into @returned_ID

from user_authentication where user_name = ? ');

prepare s1 from @dyn_que ;

set @usn = userName;

execute s1 using @usn ;

set @dyn_update =CONCAT('update job_seeker set fname =',fn,', lname = ',ln,' ,mname = ',mn,' ,

nationality =',nationality,',address =',ad,',city =',city,',phone=',phone,',

mobile =',mob,', gender = ',gender,',other =',other,',

degree_id =',degId,', job_target=',jtarg,', dob =',dob,', education =',educ,',

experience=',exper,', marital_status=',maritalStatus,' where user_id =@returned_ID');

prepare s2 from @dyn_update;

execute s2;

end

每当我通过以下方式致电程序时:

call createSeekerProfile('realsilhouette','robert','marie','david','male'

,'earthal','an address here','capital of earth','012178152',

'1111111111','single',2,'engineering','looking forward','determined',

'2008-7-04','Oracle CEO')

我收到一个可怕的错误:

Error Code: 1064

You have an error in your SQL syntax; check the manual that corresponds

to your MySQL server version for the right syntax to use near 'address here,

city =capital of earth,phone=012178152,

mobile =1111111111, gender' at line 2

但是当我尝试在存储过程中手动执行update语句时,它运行得很好.

最新帖子 :

感谢上帝,最后我解决了问题,问题归结为顺序,我所做的只是按顺序制作参数,虽然更新语句不关心顺序,据我所知,我不确定,但我确信存储过程是精美创建的,这是新代码:

DELIMITER $$

CREATE DEFINER=`root`@`localhost` PROCEDURE `createSeekerProfile`(

in un varchar(45),

in fn varchar(45),

in ln varchar(45),

in mn varchar(45),

in g varchar(10),

in dateOfBirth date,

in ms varchar(45),

in ad varchar(45),

in city varchar(45),

in nat varchar(45),

in ph varchar(45),

in mob varchar(45),

in degid int,

in educ varchar(100),

in exp varchar(250),

in other varchar(250),

in jtarg varchar(250))

begin

declare returned_ID int(11);

set @dyn_que = CONCAT('select user_id into @returned_ID from user_authentication

where user_name = ? ');

prepare s1 from @dyn_que ;

set @usn = un;

execute s1 using @usn ;

set @dyn_update =CONCAT('update job_seeker set fname

="',fn,'",lname="',ln,'",mname="',mn,'",lname ="',ln,'",

gender ="',g,'",dob="',dateOfBirth,'",marital_status="',ms,'",

address="',ad,'",city="',city,'",

nationality="',nat,'",phone="',ph,'",mobile="',mob,'",degree_id="',

degid,'",education="',educ,'",

experience="',exp,'",other="',other,'",job_target="',jtarg,'"

where user_id = @returned_ID');

prepare stm from @dyn_update;

execute stm;

end $$

非常感谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值