如何修改oracle数据库所有包含某一列的N个表中的数据

例如:数据库中有一些表(不确定是哪些)包含ypdm(药品代码)、cddm(产地代码)相对应的两列(有cddm一列的表中必定有ypdm一列,反之有ypdm的表中未必有cdd... 例如:数据库中 有一些表(不确定是哪些)
包含ypdm(药品代码)、cddm(产地代码)相对应的两列
(有cddm一列的表中必定有ypdm一列,反之有ypdm的表中未必有cddm一列)
想要把整个数据库中所有表中的ypdm=‘001’ 对应的cddm改为'002'
更改所有包含这2列的表。。。
展开
 我来答
石亮东
2013-04-27 · TA获得超过1217个赞
知道小有建树答主
回答量:2022
采纳率:66%
帮助的人:1410万
展开全部
badkano 是完全可以的。

不过建议动这些东西时候先备份下,搞不好出大事的。
分步走吧。
1. 生成SQL脚本
SELECT 'update ' || table_name || ' set cddm=''002'' where yydm=''001''' AS SQLSCRIPT FROM COL;
2. 把生成的sql执行下,可以单 个SQL调试下是否正常 。

祝您成功;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
badkano
2013-04-19 · 知道合伙人体育行家
badkano
知道合伙人体育行家
采纳数:144776 获赞数:885368
团长

向TA提问 私信TA
展开全部
存储过程执行
首先建立存储过程
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;
更多追问追答
追问

什么错误这是?

追答
你按照我写的那个换行,我怀疑是百度不会换行,把有的地方连上了,你仔细看一下再执行哦
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友845f74e61
2013-04-19 · TA获得超过6929个赞
知道大有可为答主
回答量:4050
采纳率:50%
帮助的人:1625万
展开全部
什么数据库?Oracle?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式