可能重复:
在所有表中的所有字段中搜索特定值 (Oracle)
在整个架构的所有字段中搜索给定字符串以获取 Oracle
我有这个:
select * from
{select table_name
from user_tab_columns
where data_type = 'VARCHAR2')
但是,当然,它不起作用。我只使用 SQL Developer,不知道如何继续。
我以为我在上面的查询中要求从每个表中全选,但这是不正确的。我在 SO 上看到了一些答案,但它们没有帮助。我不只需要column_name
in user_tab_columns
,我需要列的值
我真的只想找到名字“JONES”在数据库中的位置。我不知道表格或列,只是价值在那里......某处。
谢谢。
当我从以下位置运行代码时:
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 也不喜欢不相等的<>
尝试!=
。
编辑:如果我只运行:
SELECT owner, table_name, column_name
FROM all_tab_columns
WHERE owner != 'SYS' and data_type LIKE '%CHAR%'
我没有错误。
如果我在没有 的情况下运行,则owner != 'SYS'
权限不足(尽管我拥有数据库)
删除运行,用orowner != 'SYS'
放回去,失败!=
<>
编辑:CONNECT BY
目前正在尝试