Sergey, this is the stored proc:
CREATE DEFINER=`root`@`localhost` PROCEDURE `genqrlabels`(IN pHeaderID INT(11))
BEGIN
DECLARE v_finished INTEGER DEFAULT 0;
DECLARE vitemcode varchar(50) DEFAULT "";
DECLARE vdescription varchar(100) DEFAULT "";
DECLARE vuniqueid varchar(20) DEFAULT "";
DECLARE vexpiry varchar(10);
DECLARE vqtyreceived decimal(12,4);
DECLARE vqrlabel varchar(250) DEFAULT "";
DECLARE i INTEGER DEFAULT 0;
DECLARE rrdetails_cursor CURSOR FOR
SELECT itemcode,description,uniqueid, DATE_FORMAT(expiry, '%Y-%m-%d') AS expiry,qtyreceived,Concat('Item Code: ',itemcode,'\n','Desc: ',Description,'\n','Batch ID: ',uniqueid,'\n','Expiry: ',DATE_FORMAT(expiry, '%Y-%m-%d')) AS qrlabel FROM bw01.vwrrdetails Where HeaderID = pHeaderID;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET v_finished = 1;
DROP TABLE IF EXISTS tmpQRLabels;
CREATE TEMPORARY TABLE tmpQRLabels
(itemcode VARCHAR(50),description varchar(100),uniqueid varchar(20),expiry varchar (10),qtyreceived decimal(12,4),qrlabel varchar(200));
#CREATE TEMPORARY TABLE tmpQRLabels SELECT * FROM tblItems LIMIT 0;
OPEN rrdetails_cursor;
get_item: LOOP
FETCH rrdetails_cursor INTO vitemcode,vdescription,vuniqueid,vexpiry,vqtyreceived,vqrlabel;
IF v_finished = 1 THEN LEAVE get_item; END IF;
SET i = 1;
WHILE i <= vqtyreceived DO
INSERT INTO tmpQRLabels VALUES( vitemcode,vdescription,vuniqueid,vexpiry,vqtyreceived,vqrlabel);
SET i = i + 1;
END WHILE;
END LOOP get_item;
CLOSE rrdetails_cursor;
END