简化动态MERGE的SQL计算
来源:互联网 发布:蓝月传奇羽毛进阶数据 编辑:程序博客网 时间:2024/05/22 03:48
MSSQL,ORACLE等数据库支持MERGE语句更新表,但表结构未知时,由于缺乏集合类数据,用存储过程获得表结构再动态拼出SQL非常麻烦,代码会有几十行之多;同样原因,用Java等高级语言实现也不简单。而且使用存储过程或Java程序需要代码将内置于数据库或应用程序中,更新管理较为麻烦。这时候可用集算器来协助处理,代码可置于数据库和应用程序之外,不影响数据库与应用程序的结构,易于维护。
参数source和target代表两个结构相同但数据不同的表,要求以主键为标准用source更新target,比如table1和table2的主键都是A和B,数据如下:
用table2更新table1时,MERGE语句应当如下:
MERGE INTO table1 as t USING table2 as s ON t.A=s.A and t.B=s.B WHEN MATCHED THEN UPDATE SET t.C=s.C,t.D=s.D WHEN NOT MATCHED THEN INSERT VALUES(s.A,s.B,s.C,s.D)更新后table1应当如下:
集算器代码:
A1,A2: 从系统表中读出表source的主键存入变量pks,计算结果为集合[”A”,”B”]。各种数据库获得主键的方法不同,这里以MSSQL为例。
A3,A4:读出source的完整字段,columns的计算结果为[”A”,”B”,”C”,”D”]。
A5:动态生成MERGE语句。pks.(…)是循环函数,可对集合(包括结果集)的成员依次计算,计算中可用~引用循环变量,用#引用循环计数。
A6:执行MERGE语句。
0 0
- 简化动态MERGE的SQL计算
- 简化多层分组关联计算的sql
- 固定分组计算的sql简化
- 简化各种SQL有序计算的示例
- 简化SQL式计算之行间计算
- 简化实现动态行列转置的SQL
- SQL语句的简化
- 简化SQL式计算之固定排序
- 简化SQL式计算之区间合并
- 简化SQL式计算之记录拆分
- 简化SQL计算之字母分段
- 经纬度距离的简化计算
- 实现SQL动态列计算的示例
- 使用Mybatis动态sql简化开发
- sql merge的用法
- Oracle9i的简化SQL语法
- 简化SQL计算之打乱数据列次序(Shuffle)
- 简化SQL计算之按记录条数汇总数据
- 【C语言连载一 】----------C语言基础
- 玩转Node.js - 05. LS 过滤器
- scanf的一般用法
- 网络刷博器
- 关于Office 2010报错,某个对象程序库(|)丢失或损坏。请运行安装程序
- 简化动态MERGE的SQL计算
- android 屏幕适配小结
- hdu 2094 产生冠军(STL map || 拓扑 || STL set)
- 【C语言连载二】--------选择结构、循环结构、跳转语句(附几个例子)
- 【学习】Hadoop、爬虫和Elasticsearch的企业级应用
- 迪科斯彻算法总结
- javascript总结
- 最短路
- 【ARM】【NEON加速介绍】