Bazı işlemleri yapması gereken bir prosedür oluşturdum ama her dediğimde, MySQL bunun ne anlama geldiğine dair ipucu vermediğim bir hata ile çıkıyor. Bunu boş yere anlamaya çalıştım, işte burada bir işlem yapmak için yapılan depolanmış prosedürün bulunduğu tablo yapısı:
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
);
Saklı yordam İşte:
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 [email protected]_ID');
prepare s2 from @dyn_update;
execute s2;
end
Her prosedürü ne zaman arayacağım?
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')
Korkunç bir hata alıyorum:
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
Ancak saklı yordamın içinde bulunan el ile güncelleştirme deyimini çalıştırmayı denediğimde, çok iyi çalışıyor.
yeni posta :
teşekkürler tanrı, nihayet sorunu çözdüm, sorun siparişe geldi, tüm yaptığım sadece sırayla parametreleri yapmak, güncelleme bildirimi sipariş hakkında umurumda değil, bildiğim kadarıyla emin değilim , Ama eminim saklı yordam güzelce oluşturuldu, yeni kod:
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 $$
çok teşekkürler