編寫存儲過程如下:
-- 刪除proc1存儲過程
drop PROCEDURE proc_delete;
-- ------------------------------------------------------------
-- 查詢數據庫中的表名,根據查詢到的表名,刪除該表名中的數據
-- ------------------------------------------------------------
CREATE PROCEDURE proc_delete()
begin
declare done int;
declare table_gis varchar(100);
declare v_delete varchar(100);
declare v_temp varchar(100); -- 存放最終刪除sql
-- 查詢itsm1庫中以'itsm_gis'開頭的表名
declare cursor_table_gis cursor for SELECT DISTINCT table_name tableName from information_schema.columns where table_schema='itsm1' and table_name like 'itsm_gis_%' and table_name != 'itsm_gis_multimedia' and table_name !='itsm_gis_line';
declare continue handler for not found set done=1;
open cursor_table_gis;
set @v_delete='delete from ';
cursor_loop:loop
FETCH cursor_table_gis INTO table_gis;
if done=1 then
leave cursor_loop;
end if;
-- 連接字符串函數
set @v_temp=CONCAT_WS(' ',@v_delete,table_gis,';');
select @v_temp;
prepare sqlstr from @v_temp;
execute sqlstr;
deallocate prepare sqlstr;
end loop cursor_loop;
close cursor_table_gis;
commit;
-- 刪除線路 itsm_gis_line表與其它gis數據存在主外鍵關系,所以最后刪除
delete from itsm_gis_line;
commit;
--
end
-- 執行proc_delete存儲過程
call proc_delete();