DB2 9.5 SQL Procedure Developer 认证考试 735 准备,第5部分
2010-02-18 15:01:11 来源:WEB开发网MERGE 语句
使用MERGE 语句组合有条件更新、插入或删除操作
MERGE 语句 使用来自源表的数据更新目标表或可更新视图。在一次操作期间,可以对目标表中与源表匹配的行进行更新或删除,同时插入目标表中不存在的行。
例如,假设 EMPLOYEE 表是目标表,其中包含关于一家大公司的职员的最新信息。分支机构办公室通过维护自己的EMPLOYEE 表版本 MY_EMP 来更新本地职员记录。通过使用MERGE 语句,可以用MY_EMP 表中的信息更新 EMPLOYEE 表,MY_EMP 表作为合并操作的源表。
下面的语句把职员编号为 000015 的新职员记录插入 MY_EMP 表中。
清单 6. 插入新职员的记录
INSERT INTO my_emp (empno, firstnme, midinit, lastname, workdept,
phoneno, hiredate, job, edlevel, sex, birthdate, salary)
VALUES ('000015', 'MARIO', 'M', 'MALFA', 'A00',
'6669', '05/05/2000', 'ANALYST', 15, 'M', '04/02/1973', 59000.00)
下面的语句把职员编号为 000010 的现有职员的更新工资数据插入 MY_EMP 表中。
INSERT INTO my_emp (empno, firstnme, midinit, lastname, edlevel, salary)
VALUES ('000010', 'CHRISTINE', 'I', 'HAAS', 18, 66600.00)
现在,插入的数据只存在于 MY_EMP 表中,因为它还没有与 EMPLOYEE 表合并。清单 7 给出的MERGE 语句获取 MY_EMP 表的内容并把它们合并到 EMPLOYEE 表中。
清单 7. MERGE 语句
MERGE INTO employee AS e
USING (SELECT
empno, firstnme, midinit, lastname, workdept, phoneno,
hiredate, job, edlevel, sex, birthdate, salary
FROM my_emp) AS m
ON e.empno = m.empno
WHEN MATCHED THEN
UPDATE SET (salary) = (m.salary)
WHEN NOT MATCHED THEN
INSERT (empno, firstnme, midinit, lastname, workdept, phoneno,
hiredate, job, edlevel, sex, birthdate, salary)
VALUES (m.empno, m.firstnme, m.midinit, m.lastname,
m.workdept, m.phoneno, m.hiredate, m.job, m.edlevel,
m.sex, m.birthdate, m.salary)
这里给源表和目标表分配了关联名,从而避免搜索条件中的表引用出现歧义。此语句指定 MY_EMP 表中应该考虑的列。语句还指定在 MY_EMP 表中的行与 EMPLOYEE 表匹配和不匹配时分别执行的操作。
现在,对 EMPLOYEE 表执行以下查询会返回职员 000015 的记录:
SELECT * FROM employee WHERE empno = '000015'
以下查询返回职员 000010 的记录,其中的SALARY 列包含更新后的值:
SELECT * FROM employee WHERE empno = '000010'
系统过程 ADMIN_CMD
DB2 在 SYSPROC 模式中提供 ADMIN_CMD过程,从而允许使用CALL 语句从应用程序或另一个过程直接运行管理命令。不能从 UDF 或触发器调用此过程。
ADMIN_CMD 有一个 CLOB(2M) 类型的输入参数,其中包含要执行的一个管理命令。调用此过程的语法如下: CALL ADMIN_CMD(command_string);
当前,此过程支持许多 DB2 v9.5 管理命令。下面是最常用的管理命令:
DESCRIBE
EXPORT
FORCE APPLICATION
IMPORT
LOAD
REORG INDEXES/TABLE
RUNSTATS
UPDATE DATABASE CONFIGURATION
在 IBM DB2 9.5 Information Center 上可以找到支持的命令的完整列表。
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
- ››Sql Server中通过父记录查找出所有关联的子记录
- ››SqlServer触发器、存储过程和函数
- ››SQL Server 中的事务(含义,属性,管理)
- ››Sqlite数据库插入和读取图片数据
- ››Sql server 2005拒绝了对对象 'xx表' (数...
- ››Sql server 2005拒绝了对对象 'xx表' (数...
更多精彩
赞助商链接