This document presents a comparative study of SwisSQL – SQL Server to Oracle Edition and Oracle Migration WorkBench products with respect to the migration of SQL Server to Oracle database.
| Sl.No |
Feature |
SwisSQL |
OMWB |
| 1 |
SQL Server Database version supported |
2000, 7, 6.5 |
 |
 |
| 2 |
Oracle Database version supported |
10g, 9i, 8i |
 |
 |
| 3 |
OS Supported |
Windows |
 |
 |
| Linux |
 |
 |
| 4 |
Option to fetch the database object for conversion |
 |
 |
| 5 |
Option to load local T-SQL files for conversion |
 |
 |
| 6 |
Compile converted objects into Oracle database from tool |
 |
 |
| 7 |
Migrate data |
 |
 |
| 8 |
Object name customization before conversion :
Modifying object names (i.e. names of Tables, Procedures, Functions, Indexes, Views and Triggers) before conversion |
 |
 |
| 9 |
Edit source/converted code from tool |
 |
 |
| 10 |
Data type mapping customization |
 |
 |
| 11 |
Support for conversion of Multiple databases |
 |
 |
| Sl.No |
Conversion Input |
SwisSQL |
OMWB |
| |
| 1. Data types |
| 1 |
System defined datatypes |
 |
 |
| 2 |
User defined datatypes |
 |
 |
| 2. Operators |
| 1 |
Arithmetic operators (+,-,*,/,%) |
 |
 |
| 2 |
Assignment operator (=) |
 |
 |
| 3 |
Bitwise operators |
Bitwise AND : & |
 |
 |
| Bitwise OR : | |
 |
 |
| Bitwise XOR : ^ |
 |
 |
| Bitwise NOT : ~ |
 |
 |
| 4 |
Comparison operators |
 |
 |
| 5 |
Logical operators |
 |
 |
| 6 |
String concatenation operator |
 |
 |
| 3. Identifiers |
| 1 |
Truncation of invalid object names (based on length) |
 |
 |
| 2 |
Truncation of invalid variable names in Stored Procedures |
 |
 |
| 3 |
Object names with double quotes |
 |
 |
| 4 |
Object names starting with numerals |
 |
 |
| 5 |
Handling of Keywords when used as Object names |
 |
 |
| 4. Built-in Functions |
| 1 |
ATN2 |
 |
 |
| 2 |
CAST |
Conversion to binary type. |
 |
 |
| Datetime to numeric |
 |
 |
| Other cases |
 |
 |
| 3 |
COL_LENGTH |
 |
 |
| 4 |
COL_NAME |
 |
 |
| 5 |
CURRENT_USER |
 |
 |
| 6 |
CONVERT |
Conversion to binary type.
SELECT @bin_var = convert(binary, @char_var) |
 |
 |
| Datetime to numeric |
 |
 |
| Default date format, styles 20, 120, fractional seconds |
 |
 |
| Other cases |
 |
 |
| 7 |
DATEDIFF |
With millisecond/ms as datepart |
 |
 |
| Other cases |
 |
 |
| 8 |
DATENAME |
Handling date formats which are not accepted in Oracle |
 |
 |
| Other cases |
 |
 |
| 9 |
DATEPART |
Handling date formats which are not accepted in Oracle |
 |
 |
| Other cases |
 |
 |
| 10 |
DB_ID |
 |
 |
| 11 |
DB_NAME |
 |
 |
| 12 |
DEGREES |
 |
 |
| 13 |
DIFFERENCE |
 |
 |
| 14 |
FILE_ID |
 |
 |
| 15 |
FILE_NAME |
 |
 |
| 16 |
GETUTCDATE |
 |
 |
| 17 |
NCHAR |
 |
 |
| 18 |
OBJECT_ID |
 |
 |
| 19 |
PI |
 |
 |
| 20 |
QUOTENAME |
 |
 |
| 21 |
RADIANS |
 |
 |
| 22 |
RAND |
 |
 |
| 23 |
SCOPE_IDENTITY |
 |
 |
| 24 |
SESSION_USER |
 |
 |
| 25 |
SQUARE |
 |
 |
| 26 |
SUSER_SID |
 |
 |
| 27 |
SUSER_SNAME |
 |
 |
| 28 |
SYSTEM_USER |
 |
 |
| 29 |
UNICODE |
 |
 |
| 30 |
USER_ID |
 |
 |
| 31 |
Other Built-in Functions |
 |
 |
| 5. Global Variables |
| 1 |
@@ERROR, @@FETCH_STATUS, @@IDENTITY, @@TRANCOUNT, @@ROWCOUNT |
 |
 |
| 2 |
Other global variables |
 |
 |
| 6. DDL Statements |
| 1 |
CREATE TABLE |
Handling of date formats for default values |
 |
 |
| Other syntaxes |
 |
 |
| 2 |
CREATE INDEX |
 |
 |
| 3 |
CREATE VIEW |
 |
 |
| 4 |
CREATE TRIGGER |
AFTER Triggers |
 |
 |
| INSTEAD OF Triggers |
 |
 |
| COLUMNS_UPDATED |
 |
 |
| IF UPDATE |
 |
 |
| WITH APPEND |
 |
 |
| NOT FOR REPLICATION |
 |
 |
| 5 |
CREATE PROCEDURE |
FOR REPLICATION |
 |
 |
| Other syntaxes |
 |
 |
| 6 |
CREATE FUNCTION |
Inline table valued functions |
 |
 |
| Multi statement table valued functions |
 |
 |
| Other syntaxes |
 |
 |
| 7 |
ALTER Statements in Scripts |
ALTER TABLE |
 |
 |
| ALTER PROCEDURE |
 |
 |
| ALTER TRIGGER |
 |
 |
| ALTER VIEW |
 |
 |
| 7. DML Statements |
| 1 |
INSERT |
Handling of date formats for date type columns |
 |
 |
| Migration of statements whose table has an IDENTITY column. |
 |
 |
| Other syntaxes |
 |
 |
| 2 |
UPDATE |
Handling of date formats for date type columns |
 |
 |
| Updating a table on satisfying some join condition |
 |
 |
| Update FROM SQL with SELECT query in SET expression |
 |
 |
| Other syntaxes |
 |
 |
| 3 |
DELETE |
JOINs in DELETE statement |
 |
 |
| Other syntaxes |
 |
 |
| 4 |
SELECT |
WHERE Clause |
Handling of date formats for date type columns |
 |
 |
| Other syntaxes |
 |
 |
| Other syntaxes |
 |
 |
| 8. TRANSACTION Statements |
| 1 |
BEGIN Transaction |
 |
 |
| 2 |
COMMIT Transaction |
 |
 |
| 3 |
COMMIT WORK |
 |
 |
| 4 |
Transaction variables |
 |
 |
| 5 |
Other statements |
 |
 |
| 9. CURSOR Statements |
| 1 |
Open, Fetch, Deallocate cursors |
 |
 |
| 2 |
Cursor variables |
 |
 |
| 3 |
Cursor functions |
 |
 |
| 10. Declaration Statements |
| 1 |
DECLARE local variable with basic data types |
 |
 |
| 2 |
DECLARE CURSOR |
 |
 |
| 3 |
DECLARE local variable of type TABLE |
 |
 |
| 11. Condition and Control-flow Statements |
| 1 |
IF, BREAK, WHILE, CASE, BEGIN ... END, CONTINUE, GOTO, and RETURN |
 |
 |
| 12. Other Statements |
| 1 |
EXECUTE Statement |
Execute with procedure name as variable |
 |
 |
| Other syntaxes |
 |
 |
| 2 |
GRANT Statement |
|
 |
 |
| 3 |
PRINT Statement |
|
 |
 |
| 4 |
RAISERROR Statement |
|
 |
 |
| 5 |
CLOSE Statement |
|
 |
 |
| 6 |
SET Statement |
Handling date formats for literal values |
 |
 |
| Other syntaxes |
 |
 |
| 13. Migration of stand alone queries |
| 1 |
Migration of stand alone queries - DDLs and DMLs |
 |
 |
| 14. Comments Positioning |
| 1 |
Migration of comments by maintaining the position |
 |
 |
| 15. Formatting |
| 1 |
Generated PL/SQL format |
 |
 |
| 16. Error Recovery |
| 1 |
Ability to recover from an unrecogonized SQL statement and continue parsing rest of the statements |
 |
 |