暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 批量更新

askTom 2017-03-17
231

问题描述

嗨,汤姆,

我有一个名为客户的表格,下面有数据

SQL> select * 来自客户;

身份证姓名年龄地址工资
-
1 Ramesh 35 ahammedabad 2000
2 Khilan 25德里1500
3考希克23科塔2000
4 Chaithali 25孟买6500
5 Hardik 27 Bhoopal 8500
6 Kamal 22 madhyapradeh 4500
7马菲24印多尔10000
8 Md Rafi 31北方邦1500
9 Gajanana 30卡纳塔克邦45000

不,我需要增加所有员工的工资

这里的代码


SQL> 声明
2 aat类型是pls_integer的数字索引表;
3 vtemp aat;
4开始
5选择 *
6批量收集到vtemp
7来自客户;
8 forall i in 1 .. vtemp.last
9更新客户设置工资 = 工资200
10其中工资 = vtemp(i);
11结束;
12/
来自客户;
*
第7行的错误:
ORA-06550: 第6行第25列:
PL/SQL: ORA-00947: 值不足
ORA-06550: 第5行第1列:
PL/SQL: SQL语句已忽略


需要解决这个问题。您的帮助将不胜感激。

专家解答

你为什么用forall做这个?为什么不只是:

update customers set salary=salary+200




无论如何,问题来了,因为您试图将所有列选择为一个数字。您需要将您的类型声明更改为客户 % rowtype的表:

type aat is table of customers%rowtype index by pls_integer;


或者,更好的是,仅使用所需的列进行记录类型。然后只选择那些。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论