0

可能重复:
在所有表中的所有字段中搜索特定值 (Oracle)
在整个架构的所有字段中搜索给定字符串以获取 Oracle

我有这个:

select * from 
{select table_name
from user_tab_columns
where data_type = 'VARCHAR2')

但是,当然,它不起作用。我只使用 SQL Developer,不知道如何继续。

我以为我在上面的查询中要求从每个表中全选,但这是不正确的。我在 SO 上看到了一些答案,但它们没有帮助。我不只需要column_namein user_tab_columns,我需要列的值

我真的只想找到名字“JONES”在数据库中的位置。我不知道表格或列,只是价值在那里......某处。

谢谢。

当我从以下位置运行代码时:

在所有表中的所有字段中搜索特定值 (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 也不喜欢不相等的<>尝试!=

编辑:如果我只运行:

SELECT owner, table_name, column_name
                      FROM all_tab_columns
                      WHERE owner != 'SYS' and data_type LIKE '%CHAR%'

我没有错误。

如果我在没有 的情况下运行,则owner != 'SYS'权限不足(尽管我拥有数据库)

删除运行,用orowner != 'SYS'放回去,失败!=<>

编辑:CONNECT BY目前正在尝试

4

0 回答 0