DB2 9.7 中的 SQL 兼容性:从触发器到对象改进(演示新的 Oracle 兼容性特性)
2009-11-16 00:00:00 来源:WEB开发网CREATE OR REPLACE PROCEDURE message_proc (myname varchar2)
IS
BEGIN
DBMS_OUTPUT.PUT_LINE('Welcome to DB2 9.7 ( )! ' || myname
|| '. Now supports for ORACLE SQL and PL /SQL as well :-)!');
END message_proc;
执行以下命令在 DB2 中调用这个 PL/SQL 过程:
EXEC proc_name
EXEC message_proc('Anil');
下面是一个使用 FOR 循环的示例:
BEGIN
FOR a IN 10 .. 20 LOOP
DBMS_OUTPUT.PUT_LINE('Counter ' || a);
END LOOP;
END;
这个循环产生以下输出:
Counter 10
Counter 20
truncate table 命令
有 Oracle 数据库背景的开发人员很可能使用过 TRUNCATE TABLE 命令。DB2 现在也支持这个命令。下面的代码创建一个简单的表,在其中添加行,然后使用 TRUNCATE 命令删除表中的所有行:
CREATE TABLE CLIENTS
(CLIENTID NUMBER(5) PRIMARY KEY NOT NULL,CLIENTNAME
VARCHAR2(50));
插入一些行:
INSERT INTO CLIENTS (CLIENTID, CLIENTNAME) VALUES (1,'IBM');
INSERT INTO CLIENTS VALUES (2,'MSFT');
INSERT INTO CLIENTS VALUES (3,'EDB');
表 1: DB2_COMPATIBILITY_VECTOR 值
我们看一下插入的行:
SELECT * FROM CLIENTS;
现在,执行以下命令删除这些行:
TRUNCATE TABLE CLIENTS;
现在确认这些行是否已经消失了:
SELECT * FROM CLIENTS;
输出中应该不会显示任何行。
对象和并发改进
最后,我要讨论 DB2 9.7 中两个重要的改进,它们可以节省时间和提高性能:初次使用检验(first-use validation)和新的默认锁状态。
初次使用检验
如果修改了底层数据库对象(表、视图、过程、函数等等),那么在依赖它的对象下一次获取它时,会自动地重新检验它。这肯定会节省应用程序开发人员的时间。每当修改对象时,都会执行自动的依赖性检查。
Read currently committed(DB2 中的默认锁状态)
在以前的 DB2 版本中,不可能出现一个用户读取一行,而同时另一个用户写同一行的情况。这是因为读者要等待写操作的结果。现在,DB2 9.7 使用的默认锁状态允许读者不等待写操作的结果。相反,它们会读取这一行的当前已经提交的版本。因此,读者不会阻塞写者,写者也不会阻塞读者。
这些新的 SQL 兼容性特性给我留下了非常深刻的印象。本文只能涉及这些特性的皮毛,请您自己试试 DB2 9.7。您绝不会失望的!
- ››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表' (数...
更多精彩
赞助商链接