子查询返回多行时如何更新(使用游标)

时间:2016-02-06 14:05:38

标签: sql oracle sql-update

update tac_master
   set msg = (select 'Yes,this is a 4G supportive handset.Marketing Name'||MKT_NAME||' of LTE:1800 Manufacturer#'||manufacturer 
              from tac_master)
where lte_1800='Yes';

附加表格数据和结构Table sample

1 个答案:

答案 0 :(得分:0)

对于您指定的代码,只需将子查询更改为值,因为您使用常量值更新它 - 您不需要再次查询它以获取mkt_name和制造商值,因为它们可用在更新声明中:

update tac_master
set msg = 'Yes,this is a 4G supportive handset.Marketing Name'||MKT_NAME||' of LTE:1800 Manufacturer#'||manufacturer
where lte_1800='Yes';

对于在子查询返回多个值时更新行的一般问题 - 你不能,这就是为什么你得到这个错误,Oracle必须知道当前必须修改的值和以你自己的方式去做,你没有定义它