如何修改oracle数据库所有包含某一列的N个表中的数据
例如:数据库中有一些表(不确定是哪些)包含ypdm(药品代码)、cddm(产地代码)相对应的两列(有cddm一列的表中必定有ypdm一列,反之有ypdm的表中未必有cdd...
例如:数据库中 有一些表(不确定是哪些)
包含ypdm(药品代码)、cddm(产地代码)相对应的两列
(有cddm一列的表中必定有ypdm一列,反之有ypdm的表中未必有cddm一列)
想要把整个数据库中所有表中的ypdm=‘001’ 对应的cddm改为'002'
更改所有包含这2列的表。。。 展开
包含ypdm(药品代码)、cddm(产地代码)相对应的两列
(有cddm一列的表中必定有ypdm一列,反之有ypdm的表中未必有cddm一列)
想要把整个数据库中所有表中的ypdm=‘001’ 对应的cddm改为'002'
更改所有包含这2列的表。。。 展开
3个回答
展开全部
badkano 是完全可以的。
不过建议动这些东西时候先备份下,搞不好出大事的。
分步走吧。
1. 生成SQL脚本
SELECT 'update ' || table_name || ' set cddm=''002'' where yydm=''001''' AS SQLSCRIPT FROM COL;
2. 把生成的sql执行下,可以单 个SQL调试下是否正常 。
祝您成功;
不过建议动这些东西时候先备份下,搞不好出大事的。
分步走吧。
1. 生成SQL脚本
SELECT 'update ' || table_name || ' set cddm=''002'' where yydm=''001''' AS SQLSCRIPT FROM COL;
2. 把生成的sql执行下,可以单 个SQL调试下是否正常 。
祝您成功;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
存储过程执行
首先建立存储过程
create or replace procedure update_table
is
v_sql varchar2(400);
cursor c_tablename IS
select table_name from user_cons_columns where column_name in ('CDDM','YPDM')
group by table_name having count(*)=2;
begin
for rec_tables in c_tablename
loop
v_sql:= 'update ' || rec_tables.table_name || ' set cddm=''002'' where yydm=''001''';
execute immediate v_sql;
commit;
end loop;
end;
然后执行
begin
update_table;
end;
首先建立存储过程
create or replace procedure update_table
is
v_sql varchar2(400);
cursor c_tablename IS
select table_name from user_cons_columns where column_name in ('CDDM','YPDM')
group by table_name having count(*)=2;
begin
for rec_tables in c_tablename
loop
v_sql:= 'update ' || rec_tables.table_name || ' set cddm=''002'' where yydm=''001''';
execute immediate v_sql;
commit;
end loop;
end;
然后执行
begin
update_table;
end;
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
什么数据库?Oracle?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询