DB2 has some new features that are aimed at customers who want to transition from Oracle to DB2:
http://www-05.ibm.com/ch/events/symposium/pdf/9_M_Obrecht_IBM_Symposium_2009.pdf
IBM are emphasising the improved snapshot isolation, PL/SQL support and packages (“modules” in IBM’s terms).
One “feature” that caught my eye is support for implicit conversion. This is a surprise to me. In most areas of software engineering strong typing is considered not just desirable but pretty essential to program correctness and early identification of bugs. I don’t think that reducing or removing type safety is a good way to improve database languages.
In SQL Server, Oracle and other DBMSs we already have to live with implicit typing (type coercion) and the problems it causes. SQL Server won’t complain at compile time if I write the following two lines in the same procedure or script:
SELECT col1 FROM tbl WHERE col2 = CAST(1 AS INT);
SELECT col1 FROM tbl WHERE col2 = CAST('2' AS VARCHAR(10));
The effect is that SQL Server recklessly and silently casts strings as numbers and won’t even give a runtime error until the data itself causes the conversion to break. Getting it right therefore requires much more effort than it would do if types were checked at compile time.
Erland Sommarskog has posted a feedback item requesting that stricter compile time checking be incorporated in a future version of SQL Server. Please rate it if you agree:
http://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=260762