oracle 批量update ,有用到函数

qq_32999291 2017-10-23 10:41:29
update d_file set factory_name = 函数结果
where factory_name <> 函数结果

函数里面有用到d_file表

简单来说相当于product_name是函数查出来的,如果factory_name和product_name不一致,
就要把factory_name的值改成和product_name一致,像上面代码这样写的话,
因为函数里用到了d_file 这个表,所有保错,有没有大神指点一下啊
...全文
675 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangzefei_zzf 2019-08-30
  • 打赏
  • 举报
回复
你好 我想了解一下这个问题最后是如何解决的
qq_32999291 2017-10-25
  • 打赏
  • 举报
回复
引用 8 楼 jdsnhan 的回复:
[quote=引用 5 楼 qq_32999291 的回复:]
引用
加个where 条件,完美答案! SQL code ? 1 2 update d_file set factory_name =product_name where nvl(factory_name,'N') <> product_name;
我之前就是这么写的,执行时会报错,因为我的where条件里有用到函数,而函数里有d_file表 所有不能操作d_dile表里的数据,只可以查看
如果函数里面仅是简单的查询,是没有问题。不要存在其他事务性的操作[/quote] 没有其他业务操作,函数里就查询
qq_32999291 2017-10-25
  • 打赏
  • 举报
回复
引用
加个where 条件,完美答案!
SQL code

?
1
2
update d_file set factory_name =product_name
where nvl(factory_name,'N') <> product_name;
我之前就是这么写的,执行时会报错,因为我的where条件里有用到函数,而函数里有d_file表
所有不能操作d_dile表里的数据,只可以查看
报什么错?把错误信息贴上来。


这个是错误信息
jdsnhan 2017-10-25
  • 打赏
  • 举报
回复
引用 5 楼 qq_32999291 的回复:
引用
加个where 条件,完美答案! SQL code ? 1 2 update d_file set factory_name =product_name where nvl(factory_name,'N') <> product_name;
我之前就是这么写的,执行时会报错,因为我的where条件里有用到函数,而函数里有d_file表 所有不能操作d_dile表里的数据,只可以查看
如果函数里面仅是简单的查询,是没有问题。不要存在其他事务性的操作
qq_32999291 2017-10-25
  • 打赏
  • 举报
回复
引用 11 楼 zhudingjian 的回复:
Uupdate 是不是和 触发器有冲突
表里没触发器,函数里也没有喔
syuken 2017-10-25
  • 打赏
  • 举报
回复
Uupdate 是不是和 触发器有冲突
qq_32999291 2017-10-24
  • 打赏
  • 举报
回复
引用
报什么错?把错误信息贴上来。
不好意思哈,我现在不在公司,明天早上贴出来
qq_40608182 2017-10-24
  • 打赏
  • 举报
回复
引用 5 楼 qq_32999291 的回复:
引用
加个where 条件,完美答案! SQL code ? 1 2 update d_file set factory_name =product_name where nvl(factory_name,'N') <> product_name;
我之前就是这么写的,执行时会报错,因为我的where条件里有用到函数,而函数里有d_file表 所有不能操作d_dile表里的数据,只可以查看
报什么错?把错误信息贴上来。
qq_32999291 2017-10-24
  • 打赏
  • 举报
回复
引用
加个where 条件,完美答案! SQL code ? 1 2 update d_file set factory_name =product_name where nvl(factory_name,'N') <> product_name;
我之前就是这么写的,执行时会报错,因为我的where条件里有用到函数,而函数里有d_file表 所有不能操作d_dile表里的数据,只可以查看
qq_32999291 2017-10-24
  • 打赏
  • 举报
回复
引用
1、函数说一下。 2、表上是否有触发器
不好意思哈,今天上午有点事,没来回复 1、函数就简单的查询语句,没什么其他操作,把结果返回出来,直接调函数就可以返回指定结果出来 2、表上没触发器
碧水幽幽泉 2017-10-24
  • 打赏
  • 举报
回复
加个where 条件,完美答案!

update d_file set factory_name =product_name
where nvl(factory_name,'N') <> product_name;
碧水幽幽泉 2017-10-24
  • 打赏
  • 举报
回复
函数也是d_file的结果,本身也是更新d_file表,两者又没有关联条件。那么写法只有一种了。

update d_file set factory_name =product_name;
卖水果的net 2017-10-24
  • 打赏
  • 举报
回复
1、函数说一下。 2、表上是否有触发器

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧