CREATE TEMPORARY TABLE IF NOT EXISTS `myTempTable` ( `myValue` varchar(30) collate latin1_german2_ci NOT NULL ) DEFAULT CHARSET=latin1 COLLATE=latin1_german2_ci AUTO_INCREMENT=1 ; DELIMITER //; CREATE FUNCTION `myInsert`() RETURNS tinyint(4) DETERMINISTIC MODIFIES SQL DATA SQL SECURITY DEFINER COMMENT '' BEGIN INSERT INTO myTempTable SET myValue = 'Insert from myInsert'; SELECT mySubInsert() INTO @TEMPXXX; RETURN 1; END; //; CREATE FUNCTION `mySubInsert`() RETURNS tinyint(4) DETERMINISTIC MODIFIES SQL DATA SQL SECURITY DEFINER COMMENT '' BEGIN INSERT INTO myTempTable SET myValue = 'Insert from mySubInsert'; RETURN 1; END; //; DELIMITER ; SELECT mySubInsert(); SELECT * FROM myTempTable; DELETE FROM myTempTable; SELECT myInsert(); SELECT * FROM myTempTable; DROP TABLE myTempTable; CREATE TABLE IF NOT EXISTS `myTempTable` ( `myValue` varchar(30) collate latin1_german2_ci NOT NULL ) DEFAULT CHARSET=latin1 COLLATE=latin1_german2_ci AUTO_INCREMENT=1 ; SELECT myInsert(); SELECT * FROM myTempTable; show variables like "%version%";