select table_name from user_tab_cols where column_name='test';
这样查出某用户所有tabel里有test列的tabel!
但我很多个tabel里都有test这个列,我要查出所有tabel里test列的某一条数据,和在那一个tabel,具体怎么写???
这样查出某用户所有tabel里有test列的tabel!
但我很多个tabel里都有test这个列,我要查出所有tabel里test列的某一条数据,和在那一个tabel,具体怎么写???
如果你是要查全部,可以用
sqlTest:= 'select test from :1'
exec immediate sqlText using tablename
当然需要你去循环tablename。就是你提到的'tabel'
这里提供解决办法 PS 楼主你的语文是英文老师教的,英文是语文老师交的么?? tabel != table 和在那一个tabel 应该是 在哪一个table吧
一个数据库里,我想查列USN:12345具体在哪些table_name里!
select table_name from user_tab_cols where column_name='usn';
这样就查出所有table_name里有usn列的表!
table_name数据如下:
1
2
3
4
5
6
7
8
9
.
.
有上百个table_name里有USN的列,
想通过一条查询语句,分别列出哪些table_name里的USN列有12345这条数据,不还意思..表达不明
sqlText varchar2(100);
countNum number;
type tableNameType is table of varchar2(100) index by binary_integer;
tableName tableNameType;
begin
select distinct table_name bulk collect into tableName from user_tab_cols where column_name='USA';
dbms_output.put_line(tableName.count());
for v_index in 1..tableName.count() loop
sqlText:= 'select count(*) from ' ||tableName(v_index)|| ' where usa=to_char(2)';
execute immediate sqlText into countNum ;
if(countNum>0) then
dbms_output.put_line(tableName(v_index));
end if ;
end loop;
end;在plsql或者toad直接使用即可 改成存储过程也比较容易
Declare
colnm Constant Varchar2(10) := 'VEHICLE_ID'; --你要找的字段名
colv Varchar2(20) := '82'; --你要找的值
isExists Integer;
Begin
For r_up In (Select table_name From user_tab_cols Where column_name = colnm) Loop
Execute Immediate 'select case when exists (select ' || colnm || ' from ' ||
r_up.table_name ||
') then 1 else 0 end isExists from dual'
Into isExists;
If isExists = 1 Then
--输出所有符合条件的表
dbms_output.put_line(r_up.table_name);
End If;
End Loop;
End;
Declare
colnm Constant Varchar2(10) := 'VEHICLE_ID'; --你要找的字段名
colv Varchar2(20) := '82'; --你要找的值
isExists Integer;
Begin
For r_up In (Select table_name From user_tab_cols Where column_name = colnm) Loop
Execute Immediate 'select case when exists (select ' || colnm || ' from ' ||
r_up.table_name ||
') then 1 else 0 end isExists from dual'
Into isExists;
If isExists = 1 Then
--输出所有符合条件的表
dbms_output.put_line(r_up.table_name);
End If;
End Loop;
End;