oracle中无主键多表更新方法
来源:互联网 发布:两矩阵等价有什么性质 编辑:程序博客网 时间:2024/05/16 16:04
首先看下sql server中的一段关于多表更新的update语句
UPDATE table1 SET BankAccount=t_Maintenance_Account.BankAccountFROM table1INNER JOIN table2 ON (table2.RKSAccount=table1.RKSAccount)WHERE LEN(table2.Currency)=3AND table2.BranchCode='ISAPROD'
这个update语句中涉及table1和table2的更新,如果其中rksaccount属性是主键,那么这个语句是没有问题的。但如果这个属性不是主键,那么就可能出现这样的情况:table2中一条记录可以和table1种的两条记录进行连接,那么此时拿哪一条数据来进行更新呢?这个不得而知。虽然这个语句在sql server中,无论连接的属性是否为主属性,都可以执行,但结果存在变数。
但在oracle中,如果存在这种情况,则不能编译通过,它会提示错误,说的大概是mapp to a non key reserved table。那么在oracle中如果写这种多表更新语句呢?代码如下:
type ridarray IS TABLE OF rowid;type sats_bankaccount_array IS TABLE OF sats_maintenance_account.bankaccount%TYPE;sats_rowid ridarray;sats_bankaccount sats_bankaccount_array;
CURSOR mycursor1 ISSELECT table2.bankaccount, table1.rowidFROM table1,table2 where table2.RKSAccount=table1_Recon.RKSAccount and LENgth(table2.Currency)=3AND table2.BranchCode='ISAPROD'
BEGIN OPEN mycursor1; LOOP FETCH mycursor1 bulk collect INTO sats_bankaccount, sats_rowid limit 100; forall i IN 1 .. sats_rowid.COUNT UPDATE sats_excelrecon_recon SET bankaccount = sats_bankaccount(i), updated_date = sysdate, updated_by = prc_excelrecon_compile.currentuser WHERE sats_excelrecon_recon.rowid = sats_rowid(i); EXIT WHEN mycursor1 % NOTFOUND;END LOOP;CLOSE mycursor1;END;
这段是写在procedure里的代码,这种更新方法,当一条记录对应多条时,是取一个集合对被更新表中的一条数据进行更新,最近被更新的内容是集合中的最后一条数据。
- oracle中无主键多表更新方法
- java hibernate 无主键表 更新
- ORACLE多表更新方法
- 两张表主键相同,根据主键一张表主键更新另一张表数据的方法
- 更新oracle数据库表如何实现主键自增长
- Hibernate中处理无主键表的问题
- Hibernate中对无主键表的操作
- Hibernate中对无主键表的操作
- Hibernate中处理无主键表的问题
- Oracle中有关表主键的问题
- oracle中如何查找表的主键字段
- Oracle中给表添加主键、外键
- Oracle中给表添加主键、外键
- Oracle中给表添加主键、外键
- Oracle中给表添加主键、外键
- Oracle 中给表添加主键、外键
- Oracle中查找没有主键的表
- Oracle中主键增长
- LINUX下如何修改系统的服务启动和停止
- 甘肃兰州年内发行市民卡
- Android 自定义 View
- 10大移动Web开发框架
- oracle中无主键多表更新方法
- 域和生命期1_函数声明与定义
- 关于抓取的用gzlib压缩的网页的解压
- svn检出报错:Cannot map the project with svn provider
- 桥接模式(Bridge)
- Build libfreetype libtiff libjpg libpng libproj for iphone
- iPhone开发基础之局部动画
- boost regex 详解
- javascript弹出页面传值