mysql儲存過程在動態SQL內獲取返回值
阿新 • • 發佈:2019-02-18
DROPPROCEDUREIFEXISTS stat_cube.sp_get_end_date;
CREATEPROCEDURE stat_cube.`sp_get_end_date`(
p_sp_name varchar(50),
out p_ret_date date
)
BEGINdeclare src_1,src_2, src_3, src_4, src_5 varchar(50);
select src_table_1,src_table_2,src_table_3,src_table_4,src_table_5 into src_1,src_2, src_3, src_4, src_5
from stat_cube.storeprocedure_info
where sp_name = p_sp_name;
set@stmt= concat('select least(', if(src_1 isnull,'',concat('(select max(dt) from ',src_1,')'))
, if(src_2 isnull,'',concat(',(select max(dt) from ',src_2,')'))
, if(src_3 isnull,'',concat(' ,(select max(dt) from ',src_3,')'))
, if(src_4 isnull,'',concat(',(select max(dt) from ',src_4,')'))
, if(src_5 isnull,'',concat(',(select max(dt) from ',src_5,')'))
,') into @ret_date;');
PREPARE stmt1 FROM@stmt;
EXECUTE stmt1;
deallocateprepare stmt1;
set p_ret_date =@ret_date;
END;
CREATEPROCEDURE stat_cube.`sp_get_end_date`(
p_sp_name varchar(50),
out p_ret_date date
)
BEGINdeclare src_1,src_2, src_3, src_4, src_5 varchar(50);
select src_table_1,src_table_2,src_table_3,src_table_4,src_table_5 into src_1,src_2, src_3, src_4, src_5
where sp_name = p_sp_name;
set@stmt= concat('select least(', if(src_1 isnull,'',concat('(select max(dt) from ',src_1,')'))
, if(src_2 isnull,'',concat(',(select max(dt) from ',src_2,')'))
, if(src_3 isnull,'',concat('
, if(src_4 isnull,'',concat(',(select max(dt) from ',src_4,')'))
, if(src_5 isnull,'',concat(',(select max(dt) from ',src_5,')'))
,') into @ret_date;');
PREPARE stmt1 FROM@stmt;
deallocateprepare stmt1;
set p_ret_date =@ret_date;
END;