-------------------- -- 这里是查询 数字型字段值 /*declare CURSOR cur_query IS select table_name, column_name, data_type from user_tab_columns; a number; sql_hard varchar2(2000); vv number; begin for rec1 in cur_query loop a:=0; if rec1.data_type ='NUMBER' THEN a := 1; end if; if a>0 then sql_hard := ''; sql_hard := 'SELECT count(*) FROM '|| rec1.table_name ||' where ' ||rec1.column_name|| '=''TYRCE0BF26AB5C586B3 '' '; dbms_output.put_line(sql_hard); execute immediate sql_hard INTO vv; IF vv > 0 THEN dbms_output.put_line(rec1.table_name||'--'||rec1.column_name); end if; END IF; end loop; end;*/
查询字符串类型:
declare CURSOR cur_query IS select a.table_name, a.column_name, a.data_type from user_tab_columns a where 1=1 and (lower(a.data_type) = 'varchar2' or lower(a.data_type) = 'char') and NOT a.TABLE_NAME like '%$%' and NOT a.TABLE_NAME like '%+%' and NOT a.TABLE_NAME like '%=%' ORDER BY A.TABLE_NAME ASC ; a number; sql_hard varchar2(2000); vv number; rscount number; str varchar2(2000); num number; findValue varchar2(500) :='R2186E3DC09B88E1AF '; -- 要查询的字符串值 begin rscount:=0; str:='TRUNCATE table tmp_test'; execute immediate str; str:='drop table tmp_test'; execute immediate str; str:='CREATE GLOBAL TEMPORARY TABLE tmp_test (tab_name varchar2(500), col_name varchar2(500)) ON COMMIT PRESERVE ROWS'; execute immediate str; ----使用动态SQL语句来执行 for rec1 in cur_query loop rscount:= rscount + 1; a:=0; --if rec1.data_type ='VARCHAR2' or rec1.data_type='CHAR' THEN if rec1.data_type ='VARCHAR2' or rec1.data_type='CHAR' THEN a := 1; end if; if a>0 then sql_hard := ''; sql_hard := 'SELECT count(*) FROM '|| rec1.table_name ||' where ' --||rec1.column_name|| ' =''wu'''; ||rec1.column_name|| ' ='''|| findValue || ''''; --dbms_output.put_line(sql_hard); --dbms_output.put_line( '**** ' || rec1.table_name||'--'||rec1.column_name); execute immediate sql_hard INTO vv; IF NVL(vv,0) > 0 THEN dbms_output.put_line(rec1.table_name||'--'||rec1.column_name); str:= 'insert into tmp_test ' || ' select ''' || rec1.table_name || ''' as tab_name,''' || rec1.column_name || ''' as col_name from dual'; execute immediate str; str:= 'commit'; execute immediate str; end if; END IF; end loop; --str:= 'select * from tmp_test'; --execute immediate str; end; -- 运行完以后 执行 /* select * from tmp_test; */
分类:
Oracle 相关
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 提示词工程——AI应用必不可少的技术
· 地球OL攻略 —— 某应届生求职总结
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界