Sql 在Oracle表中查找特定数据
我需要在oracle数据库中找到一个列的值,但我不知道是哪个 存储在其中的表或列 如何像在中一样搜索特定或类似%%的数据 从SYS.dba\u源中选择* 有那样的桌子吗 列名ID数据类型为空?评论 所有者1 VARCHAR2 30字节Y 名称2 VARCHAR2 30字节Y对象名称 类型3 VARCHAR2 12字节Y 对象的类型: 类型,类型主体,程序,功能, 包、包体或JAVA源代码 第4行编号Y源此行的行号 文本5 VARCHAR2 4000字节Y源文本 想象一下,您的模式中有几个表,您希望在这些表中的所有列中找到一个特定的值。理想情况下,会有一个sql函数,如Sql 在Oracle表中查找特定数据,sql,oracle,plsql,Sql,Oracle,Plsql,我需要在oracle数据库中找到一个列的值,但我不知道是哪个 存储在其中的表或列 如何像在中一样搜索特定或类似%%的数据 从SYS.dba\u源中选择* 有那样的桌子吗 列名ID数据类型为空?评论 所有者1 VARCHAR2 30字节Y 名称2 VARCHAR2 30字节Y对象名称 类型3 VARCHAR2 12字节Y 对象的类型: 类型,类型主体,程序,功能, 包、包体或JAVA源代码 第4行编号Y源此行的行号 文本5 VARCHAR2 4000字节Y源文本 想象一下,您的模式中有几个表,您希
select * from * where any(column) = 'value';
不幸的是,没有这样的功能。
但是,可以编写一个PL/SQL函数来实现这一点。下面的函数迭代当前架构的所有表中的所有字符列,并尝试在其中查找val
创建或替换函数find_in_schemaval varchar2
返回varchar2是
v_旧_表用户_选项卡_列。表名称%type;
v_,其中Varchar24000;
v_first_col boolean:=真;
rc类型为ref游标;
c rc;
v_rowid varchar220;
开始
对于r in
选择
t*
从…起
用户选项卡列,用户所有表a
其中t.table\u name=a.table\u name
和t.data_类型,如“%CHAR%”
按t.table\u name循环排序
如果v_old_table为空,则
v_old_table:=r.table_name;
如果结束;
如果v_old_table r.table_name那么
v_first_col:=真;
-dbms_output.put_line'search'| | v|u old_表;
打开c以选择“从”| | v| u old| u table | |“| v| u where中选择rowid”;
将c读入v_rowid;
环
未找到c%时退出;
dbms|U输出。将|行“rowid:”|| v|u rowid |放在“| v|u old|u表中;
将c读入v_rowid;
端环;
v_old_table:=r.table_name;
如果结束;
如果v_先_col然后
v|u-where:=“where'| r.column|u-name | | like%'| | val | |'%”;
v_first_col:=假;
其他的
v|u-where:=v|u-where | |'或'| r.column|u-name | |'like%'| | val | |'';
如果结束;
端环;
回归"成功",;
终止
当我有一个表格6i时,我遇到了这个问题,表格中有数据,但我不知道从哪里获取数据表,所以这是一种解决节省我随机搜索表时间的方法