Oracle 如何搜索当前用户下所有表里含某个值的字段?create or replace procedure MY_Pro_SearchKeyWord is
v_sql VARCHAR2(4000);
v_tb_column VARCHAR2(4000);
v_cnt NUMBER(18,0);
cursor cur is SELECT "SELECT """||"""||t1.table_name||"".""||t1.Column_Name||"""||""""||" as col_name, NVL(COUNT(t.""||t1.Column_Name||""),0) as cnt FROM ""||
t1.table_name||"" t WHERE t.""||t1.column_name||"" like ""%关键字%""" AS str
FROM cols t1 left join user_col_comments t2
on t1.Table_name=t2.Table_name and t1.Column_Name=t2.Column_Name
left join user_tab_comments t3
on t1.Table_name=t3.Table_name
WHERE NOT EXISTS ( SELECT t4.Object_Name FROM User_objects t4
WHERE t4.Object_Type="TABLE"
AND t4.Temporary="Y"
AND t4.Object_Name=t1.Table_Name )
AND (t1.Data_Type="CHAR" or t1.Data_Type="VARCHAR2" or t1.Data_Type="VARCHAR")
ORDER BY t1.Table_Name, t1.Column_ID;BEGIN
FOR i IN cur LOOP
v_sql := i.str; -- 获取将要执行的SQL语句;
EXECUTE IMMEDIATE v_sql INTO v_tb_COLUMN, v_cnt;
IF v_cnt > 0 THEN
dbms_output.put_line("表:"||substr(v_tb_column,1,instr(v_tb_column,".",1,1)-1)||" 列:"||substr(v_tb_column,instr(v_tb_column,".",1,1)+1)||
"有 "||to_char(v_cnt)|| "条记录含有字串"关键字" ");
END IF;
END LOOP;
EXCEPTION WHEN OTHERS THEN
BEGIN
dbms_output.put_line(v_sql);
dbms_output.put_line(v_tb_column);
END;
end MY_Pro_SearchKeyWord;三种SQL分页查询的存储过程MYSQL C API 学习汇总相关资讯 Oracle基础教程
- Oracle块编程返回结果集详解 (11/10/2013 10:45:58)
- Oracle基础教程之设置系统全局区 (08/22/2013 14:24:00)
- Oracle基础教程知识点总结 (06/18/2013 07:43:32)
| - Oracle基础教程之tkprof程序详解 (10/22/2013 11:49:50)
- Oracle基础教程之sqlplus汉字乱码 (07/18/2013 16:30:00)
- Oracle 管理之 Linux 网络基础 (02/16/2013 18:37:35)
|
本文评论 查看全部评论 (0)