반응형


create table usp_multi_tab

as

select @rnum := @rnum + 1 as id, b.*

from (select @rnum := 0) a, information_schema.GLOBAL_STATUS b limit 10;


select replace(replace('1,3,5', ',', ''), ' ', '') regexp "[^0-9]+";


delimiter //

drop procedure if exists usp_multi //

create procedure usp_multi (

in pi_keylist text

)

begin

declare v_SQL text default '';

declare v_sqlstate varchar(5) default '00000';

declare v_err_no int;

declare exit handler for sqlexception, sqlwarning

begin

get diagnostics condition 1 v_sqlstate = RETURNED_SQLSTATE, v_err_no = MYSQL_ERRNO;

ROLLBACK;

SELECT v_sqlstate, v_err_no;

end;

if (replace(replace(pi_keylist, ',',''),' ', '') regexp "[^0-9]+") = 0 then

set v_SQL = CONCAT(v_SQL, 'SELECT *');

set v_SQL = CONCAT(v_SQL, '    FROM usp_multi_tab');

set v_SQL = CONCAT(v_SQL, '    WHERE id IN (', pi_keylist, ');');

-- select v_SQL;

set @vSQL := v_SQL;

PREPARE stmt FROM @vSQL;

EXECUTE stmt;

DEALLOCATE PREPARE stmt;

end if;

end //

delimiter ;


select * from usp_multi_tab;


call usp_multi('A');

call usp_multi('1,3,5');

반응형

'연구개발 > MYSQL' 카테고리의 다른 글

임시테이블이 필요한 쿼리 ( using temporary )  (0) 2015.03.09
innodb flush  (0) 2015.03.05
update 전/후 데이터 반환받기  (0) 2015.03.03
MRU LRU  (0) 2015.03.03
index hit  (0) 2015.03.02

+ Recent posts