日期:2014-05-17  浏览次数:20895 次

oracle 如何从某种特定格式的数据找到这种数据存在哪个表中??
在oracle里面 一个库中有n多表  
现在我只知道在这些表中的某个字段存在这样的数据:0001.123456789(格式是固定的) 我怎么样才能匹配到这种数据存在哪个表中?

------解决方案--------------------
看看:

select * from user_objects;
------解决方案--------------------
select * from user_tab_columns

可以查出字段的信息
------解决方案--------------------
Oracle本身并没有提供这要的函数,但可以通过存储过程来实现。
请参考:
SQL code

CREATE OR REPLACE PROCEDURE FindTable IS
DECLARE
    CURSOR curTableName IS 
    SELECT TABLE_NAME FROM USER_TAB_COLUMNS WHERE COLUMN_NAME='USERID';
    sqlStr VARCHAR2(200);
    res     NUMBER(20);
BEGIN
    FOR r IN curTableName
    LOOP
        -- 动态SQL语句
        sqlStr := 'SELECT COUNT(1) INTO res FROM r.TABLE_NAME WHERE USERID =' || '123';
        EXECUTE IMMEDIATE sqlStr;
        IF res >0 THEN
            DBMS_OUTPUT.PUT_LINE(r.TABLE_NAME);
        END IF;
    END LOOP;
END FindTable;

------解决方案--------------------
这个是查询哪个表中存在'USERID'这个列,并且该列中有值123。