Reputation: 1464
I have a function below:
DELIMITER $$
DROP FUNCTION IF EXISTS `vmtest`.`hello2`$$
CREATE DEFINER = `root`@`localhost` FUNCTION `vmtest`.`hello2` (s CHAR(20))
RETURNS TEXT
BEGIN
DECLARE RETURNID INTEGER;
DECLARE RETURNNAME TEXT;
DECLARE PARENTID INTEGER;
DECLARE RTN TEXT;
DECLARE RTNNAME TEXT;
SET RTN = "";
SET PARENTID = s;
WHILE PARENTID > 0 DO
SELECT
t1.category_parent_id INTO RETURNID,
t2.category_name INTO RETURNNAME
FROM e255g_virtuemart_category_categories AS t1
INNER JOIN e255g_virtuemart_categories_de_de AS t2 on t1.id = t2.virtuemart_category_id
WHERE t1.id = PARENTID;
IF RETURNID >0 THEN
IF RTN ="" THEN
SET RTN = RETURNID;
ELSE
SET RTN = CONCAT(RTN, ',', RETURNID);
SET RETURNNAME = CONCAT(RTNNAME, ',', RETURNNAME);
END IF;
END IF;
SET PARENTID = RETURNID;
END WHILE;
RETURN RETURNNAME;
END$$
DELIMITER ;
I am trying to use join query into the function but its giving me error as below:
Error in query (1327): Undeclared variable: t2
Please help
Upvotes: 0
Views: 37
Reputation: 24959
It is a little sensitive with multiple INTO
variables. It would merely be:
DELIMITER $$
DROP FUNCTION IF EXISTS `vmtest`.`hello2`$$
CREATE DEFINER = `root`@`localhost` FUNCTION `vmtest`.`hello2` (s CHAR(20))
RETURNS TEXT
BEGIN
DECLARE RETURNID INTEGER;
DECLARE RETURNNAME TEXT;
DECLARE PARENTID INTEGER;
DECLARE RTN TEXT;
DECLARE RTNNAME TEXT;
SET RTN = "";
SET PARENTID = s;
WHILE PARENTID > 0 DO
SELECT
t1.category_parent_id,t2.category_name INTO RETURNID,RETURNNAME
FROM e255g_virtuemart_category_categories AS t1
INNER JOIN e255g_virtuemart_categories_de_de AS t2
on t1.id = t2.virtuemart_category_id
WHERE t1.id = PARENTID;
IF RETURNID >0 THEN
IF RTN ="" THEN
SET RTN = RETURNID;
ELSE
SET RTN = CONCAT(RTN, ',', RETURNID);
SET RETURNNAME = CONCAT(RTNNAME, ',', RETURNNAME);
END IF;
END IF;
SET PARENTID = RETURNID;
END WHILE;
RETURN RETURNNAME;
END$$
DELIMITER ;
So it is ... INTO var1,var2, ...
Upvotes: 1