可能重复:
Search All Fields In All Tables For A Specific Value (Oracle)
Search for a given string in all fields of an entire schema for Oracle
我有这个:
select * from
{select table_name
from user_tab_columns
where data_type = 'VARCHAR2')
但是,当然,它不起作用。我只使用SQL Developer而不确定如何继续。
我以为我在上面的查询中要求从每个表中选择所有,但这是不正确的。我在SO上看到了一些答案,但他们没有帮助。我column_name
中不需要user_tab_columns
,我需要列的值
我真的只想找到名字'JONES'在数据库中的位置。我不知道表格或列,只是价值就在那里......某处。
感谢。
当我运行代码时:
Search All Fields In All Tables For A Specific Value (Oracle)
SET SERVEROUTPUT ON SIZE 100000
DECLARE
match_count INTEGER;
BEGIN
FOR t IN (SELECT owner, table_name, column_name
FROM all_tab_columns
WHERE owner <> 'SYS' and data_type LIKE '%CHAR%') LOOP
EXECUTE IMMEDIATE
'SELECT COUNT(*) FROM ' || t.owner || '.' || t.table_name ||
' WHERE '||t.column_name||' = :1'
INTO match_count
USING 'JONES%';
IF match_count > 0 THEN
dbms_output.put_line( t.table_name ||' '||t.column_name||' '||match_count );
END IF;
END LOOP;
END;
/
我收到了:
Error report:
ORA-00920: invalid relational operator
ORA-06512: at line 8
00920. 00000 - "invalid relational operator"
*Cause:
*Action:
编辑:由于某种原因,oracle不喜欢不等于<>
的{{1}}。
编辑:如果我只是跑:
!=
我没有错误。
如果我在没有SELECT owner, table_name, column_name
FROM all_tab_columns
WHERE owner != 'SYS' and data_type LIKE '%CHAR%'
的情况下运行,我获得的权限不足(我拥有数据库)
删除owner != 'SYS'
次运行,将其与owner != 'SYS'
或!=
一起放回,失败
编辑:暂时尝试<>