在oracle里面 一个库中有n多表
现在我只知道在这些表中的某个字段存在这样的数据:0001.123456789(格式是固定的) 我怎么样才能匹配到这种数据存在哪个表中?
------解决方案--------------------
看看:
select * from user_objects;
------解决方案--------------------
select * from user_tab_columns
可以查出字段的信息
------解决方案--------------------
Oracle本身并没有提供这要的函数,但可以通过存储过程来实现。
请参考:
- SQL code
CREATE OR REPLACE PROCEDURE FindTable ISDECLARE 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。