GBase存過--工作實戰


--GBase用的是mysql的語法,這是我目前工作中寫過的一個存過,用來查詢庫里所有表有沒有重復的數據

CREATE DEFINER="osg_dwods"@"%" PROCEDURE "get_table_repeat_data"(IN in_database_name varchar(30))
begin
declare v_columnValue varchar(100);
declare v_count integer;
declare v_tableName varchar(100);
declare v_columnId varchar(50);
declare v_sql varchar(1000);
declare done int default 0;

declare rec cursor for
select t.table_name,t.column_name
from `information_schema`.columns t
where t.table_schema = in_database_name
and t.ordinal_position = 1;

declare continue handler for not found set done = 1;

truncate table gbase_table_repeat;
open rec;
out_loop:
loop
fetch next from rec into v_tableName,v_columnId;
if v_columnId is not null then
set v_sql = concat('insert into osg_common.gbase_table_repeat (table_name,column_name,column_value,count)
select ''',v_tableName,''',''',v_columnId,''',t.',v_columnId,',count(1) from ',in_database_name,'.',v_tableName,' t group by t.',v_columnId,' having count(1)>1');
set @vsql = v_sql;
prepare stmt from @vsql;
execute stmt;
deallocate prepare stmt;
end if;
if done = 1 then
leave out_loop;
end if;
end loop;
close rec;
end


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM