1. DELIMITER //
2. DROP PROCEDURE IF EXISTS `proc_FindStrInAllDataBase`;
3. # CALL `proc_FindStrInAllDataBase` ('testdb','
中
');
4. CREATE PROCEDURE `proc_FindStrInAllDataBase`
5. (
6.
IN para_databasename VARCHAR(128),
7.
IN para_finstr VARCHAR(128)
8. )
9. BEGIN
10.
--
需要定义接收游标数据的变量
11.
DECLARE tmp_dbname VARCHAR(128);
12.
DECLARE tmp_tbname VARCHAR(128);
13.
DECLARE tmp_colname VARCHAR(128);
14.
--
遍历数据结束标志
15.
DECLARE done INT DEFAULT FALSE;
16.
17.
18.
--
游标
19.
DECLARE cur_db_tb CURSOR
20.
FOR
21.
SELECT
22.
#*,
23.
c.table_schema,c.table_name,c.COLUMN_NAME
24.
FROM
25.
information_schema.`COLUMNS` C
26.
INNER JOIN information_schema.`TABLES` t ON
c.`TABLE_NAME`=t.`TABLE_NAME`
27.
WHERE
28.
T.`TABLE_TYPE`='BASE TABLE'
29.
AND
30.
(c.data_type LIKE '%char%' OR c.data_type LIKE '%text
%')
31.
AND
32.
(C.TABLE_SCHEMA=para_databasename OR
IFNULL(para_databasename,'') ='') AND
IFNULL(para_finstr,'')<>'';
33.
34.
--
将结束标志绑定到游标
35.
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
36.
CREATE TEMPORARY TABLE IF NOT EXISTS rstb(dbname
VARCHAR(128),tbname VARCHAR(128),colname VARCHAR(128),cnt INT);
37.
--
打开游标
38.
OPEN cur_db_tb;
39.
--
开始循环
评论