Bug #9311 the CONCAT function call within a procedure does not work
Submitted: 21 Mar 2005 12:34 Modified: 21 Apr 2005 12:48
Reporter: Prakash Khanchandani Email Updates:
Status: No Feedback Impact on me:
None 
Category:MySQL Server Severity:S1 (Critical)
Version:5.0.2-alpha-nt OS:Windows (windows xp)
Assigned to: CPU Architecture:Any

[21 Mar 2005 12:34] Prakash Khanchandani
Description:
a concat function call within a procedure doesn't work. I get an error saying that no such function defined.

How to repeat:
i have given the sql statements that generate the error below. Create the procedure and then call it.
==============================================

create temporary table y_ear (
	k_ey	int(2) auto_increment not null primary key,
	d_ate	date
);

drop procedure if exists _cont_leaves;
delimiter //
create procedure _cont_leaves()
begin
	declare	_done		int default 0;
	declare _salyr		year;
	declare _salmn		int(2);
	declare _contcutoff	int(2);
	declare _cutoffday	int(2);
	declare _begindt	date;
	declare _enddt		date;

	set _salmn := (select vi_processmonth from various_inputs);
	set _salyr := (select vi_processyear from various_inputs);

	set _contcutoff	:= 	(
				select consider_continous
				from Leave_Parameter where
				parameter_key in (
					select max(parameter_key)
					from leave_parameter, various_inputs
					where year(parameter_key)*100+month(parameter_key) <=
						vi_processyear*100+vi_processmonth
					)
				);

	set _cutoffday	:=	(
				select cut_off_day
				from Leave_Parameter where
				parameter_key in (
					select max(parameter_key)
					from leave_parameter, various_inputs
					where year(parameter_key)*100+month(parameter_key) <=
						vi_processyear*100+vi_processmonth
					)
				);

	set _enddt	:= str_to_date(concat (_salyr, "-", _salmn, "-", _cutoffday-1), "%Y-%m-%d");

	set _salmn := _salmn - 1;
	if _salmn < 1 then
		set _salmn := 12;
		set _salyr := _salyr - 1;
	end if;

	set _begindt	:= str_to_date(concat (_salyr, "-", _salmn, "-", _cutoffday), "%Y-%m-%d");

	insert into y_ear (d_ate) values (_begindt);
	insert into y_ear (d_ate) values (_enddt);

end
//
delimiter ;

call _cont_leaves()
\g
[21 Mar 2005 12:48] MySQL Verification Team
I tested your test case with latest BK source server and I got
an expected error. Could you please provide a complete test
case ? Thanks in advance:

    ->  insert into y_ear (d_ate) values (_begindt);
    ->  insert into y_ear (d_ate) values (_enddt);
    ->
    -> end
    -> //
Query OK, 0 rows affected (0.10 sec)

mysql> delimiter ;
mysql> call _cont_leaves()
    -> \g
ERROR 1146 (42S02): Table 'test.leave_parameter' doesn't exist
[21 Apr 2005 23:00] Bugs System
No feedback was provided for this bug for over a month, so it is
being suspended automatically. If you are able to provide the
information that was originally requested, please do so and change
the status of the bug back to "Open".