我想步骤应该这样: 1.找出对应的表:select table_name from user_tab_cols where column_name='已知列名' 2.找出对应的列:select column_name from user_tab_cols where table_name='1查出的表名' and column_name<>'已知列名' 3.查询:根据2的结果构造查询语句不知哪位能一条语句就搞定,期待...
create or replace procedure pro_get_data(in_table_name in varchar2,in_col_name in varchar2) is v_sql varchar2(2000); v_field varchar2(50); v_flag number(1); begin ----- 构造查询语句 --------- v_sql:='select '; v_flag:=0; for x in (select column_name from user_tab_cols where table_name=upper(in_table_name) and column_name<>upper(in_col_name)) loop v_field:=x.column_name; if v_flag=0 then v_sql:=v_sql||v_field; v_flag:=1; else v_sql:=v_sql||','||v_field; end if; end loop; v_sql:=v_sql||' from '||in_table_name; dbms_output.put_line(v_sql); end; /
1.找出对应的表:select table_name from user_tab_cols where column_name='已知列名'
2.找出对应的列:select column_name from user_tab_cols where table_name='1查出的表名' and column_name<>'已知列名'
3.查询:根据2的结果构造查询语句不知哪位能一条语句就搞定,期待...
表名是已知的,表结构除了已知一个字段之外都不知道。想得到除掉该字段之外的所有记录。
得到该表的其他字段后,如何构造查询呢?
select a.A,a.B,a...
from tablename a 对应的字段数据插入就可以了
v_sql varchar2(2000);
v_field varchar2(50);
v_flag number(1);
begin
----- 构造查询语句 ---------
v_sql:='select ';
v_flag:=0;
for x in (select column_name from user_tab_cols where table_name=upper(in_table_name) and column_name<>upper(in_col_name))
loop
v_field:=x.column_name;
if v_flag=0 then
v_sql:=v_sql||v_field;
v_flag:=1;
else
v_sql:=v_sql||','||v_field;
end if;
end loop;
v_sql:=v_sql||' from '||in_table_name;
dbms_output.put_line(v_sql);
end;
/