我是Oracle的新手。我有一些问题,如果你能解决我非常感谢你。
详情如下,
Database name:Paul
Schema: ddpaul
table: table_12_101, table_12_102, table_12_199,..........
这些表具有相同的数据结构。
列名:
ID, Number, Comp, Module, etc..
现在,我必须使用SQL / PROCEDURE更新/更改所有表中的“COMP”列。
在一列中同时从所有表中选择“COMP”的任何方法?
保存到Excel后,我将更改所需的值。
现在主要是,
我想根据旧的excel数据更新“COMP”。
Table_12_101,......
ID | COMP | MODULE
56623114 | FA-5920-01 | FA1
56623110 | FA-5921-01 | FA1
e.g。 COMP更改为CA-5920-01或需要删除FA等。
请为上述任何人提供帮助。我将非常感谢你。
答案 0 :(得分:0)
您可以通过查询找到包含此类列的表名:
SELECT table_name FROM USER_TAB_COLS where column_name = 'COMP';
并在程序中使用此名称来执行更新。
答案 1 :(得分:0)
响应:在一列中一次从所有表中选择“COMP”的任何方法?
下面的块将为您提供必须单独运行的动态查询。
AS它为您提供动态查询,您不必在查询中写入所有表名,它将自动生成它。
declare
after_from varchar2(10000) :=NULL;
before_from varchar2(10000) :=NULL;
final_query varchar2(20000) :=NULL;
temp1 integer ;
begin
temp1 :=0;
for x in ( SELECT table_name FROM USER_TAB_COLS where column_name = 'COMP') loop
temp1 := temp1+1;
before_from := before_from || ' t'||temp1||'.COMP||'',''||';
after_from := after_from || x.table_name || ' t' ||temp1||' , ';
end loop;
before_from:=substr(before_from,1,length(before_from)-7);
after_from:=substr(after_from,1,length(after_from)-3);
final_query := 'SELECT '||before_from||' FROM '||after_from||';';
dbms_output.put_line(final_query);
end;
/