2017-07-25 95 views
0

我是存儲過程的新手。我正在編寫存儲過程來存儲臨時表中的學生詳細信息。除了courseid外,一切都可以插入。我需要從temp表中插入相應於course的courseid。我得到了學校,並正確插入。但畢業後沒有插入任何東西。我不知道什麼是錯的。如何從存儲過程的表中獲取ID?

DELIMITER $$ 
CREATE OR REPLACE PROCEDURE InsertUpdateStudents() 
BEGIN 
DECLARE v_finished INTEGER DEFAULT 0; 
DECLARE newsudentid, schoolid, courseid, subjectid, studentcount INT; 
DECLARE co, na, ma, im, fe, fr, s, bp, o, nstudentcode, st CHAR(55); 
DEClARE cur1 CURSOR FOR SELECT DT.code, DT.subject, DT.course, DT.ImageURL, DT.EnglishCr, DT.FrenchCr, DT.Si, DT.BP, DT.Off, DT.Avail FROM xcart_students_temp AS DT; 
DECLARE CONTINUE HANDLER FOR NOT FOUND SET v_finished = 1; 
OPEN cur1; 
dummy_students: LOOP 
FETCH cur1 into co, na, ma, im, fe, fr, s, bp, o, st; 
IF v_finished = 1 THEN 
LEAVE dummy_students; 
END IF; 
IF NOT EXISTS(SELECT (1) FROM xcart_students AS P WHERE P.studentcode=co) THEN 
SELECT MA.school_id INTO schoolid FROM xcart_schools AS MA WHERE LOWER(MA.name)='stmays' OR LOWER(MA.name)='st.marys' ; 
SELECT BRAN.course_id INTO courseid FROM xcart_course AS BRAN WHERE LOWER(BRAN.course_name) = LOWER(ma) AND BRAN.course_school_id = schoolid ; 
INSERT INTO xcart_students (cid,sid,coursename, subjectname, transfercode, mfgcode, meta_keywords, meta_description, title_tag,avail) VALUES(schoolid, courseid, ma, na, co, co, CONCAT(ma,' ',na,' ',fe), CONCAT(ma,' ',na,' ',fe), CONCAT(ma,' ',na,' ',fe), st); 
SET newsudentid = LAST_INSERT_ID(); 
SET studentcount = 1000 + newsudentid; 
SET nstudentcode = CONCAT('W',studentcount); 
UPDATE xcart_students SET studentcode = nstudentcode WHERE studentid = newsudentid; 
INSERT INTO xcart_students_lng_en (studentid, student, descr, fulldescr, keywords) VALUES(newsudentid, CONCAT(ma,' ',na,' ',fe,' -', s,' -',bp,' -',o), CONCAT(ma,' ',na,' ',fe,' -', s,' -',bp,' -',o), CONCAT(ma,' ',na,' ',fe,' -', s,' -',bp,' -',o), CONCAT(ma,' ',na,' ',fe,' -', s,' -',bp,' -',o)); 
INSERT INTO xcart_students_lng_fr (studentid, student, descr, fulldescr, keywords) VALUES(newsudentid, CONCAT(ma,' ',na,' ',fr,' -', s,' -',bp,' -',o), CONCAT(ma,' ',na,' ',fr,' -', s,' -',bp,' -',o), CONCAT(ma,' ',na,' ',fr,' -', s,' -',bp,' -',o), CONCAT(ma,' ',na,' ',fr,' -', s,' -',bp,' -',o)); 
IF NULLIF(im, '') IS NULL THEN 
    SET im = 'images/students/no-image.jpg'; 
END IF; 
INSERT INTO xcart_images_P(id, image_path, avail, alt, md5) VALUES(newsudentid, im, 'Y', CONCAT(ma,' ',na,' ',fe,' -', s,' -',bp,' -',o), MD5(CONCAT(ma,' ',na,' ',fe,' -', s,' -',bp,' -',o))); 
END IF; 
END LOOP dummy_students; 
CLOSE cur1; 
END$$ 
DELIMITER ; 

回答

0

而不是使用...

SET courseid = (SELECT course_id FROM xcart_course WHERE course_name = ma); 

使用

SELECT course_id INTO courseid FROM xcart_course WHERE course_name = ma; 
+0

仍然沒有工作。 –

+0

執行完上面沒有任何內容插入表中 –