对于Null值,在Oracle中,NULL与NULL既不相等,也不完全不相等。默认情况下,SQL Server则不是这样处理;在SQL Server和Sybase中,NULL就等于NULL。不能说Oracle的SQL处理是错的,也不能说Sybase或SQL Server的处理不对,它们只是方式不同罢了。实际上,所有这些数据库都符合ANSI,但是它们的具体做法还是有差异。有许多二义性、向后兼容性等问题需要解决。而SQL Server可以通过修改参数设定为与Oracle一致的Null值判断。
在SQL Server中经常看到开发人员在存储过程中创建临时表,而在Oracle中这种方式很不好。在Oracle中,如果在存储过程中创建表,会发现存在以下问题:
DDL操作会阻碍可扩缩性。
DDL操作的速度往往不快。
DDL操作会提交事务。
必须在所有存储过程中使用动态SQL而不是静态SQL来访问这个表。
PL/SQL的动态SQL没有静态SQL速度快,或者说没有静态SQL优化。