Oracle Vs SQL Server Issues
Oracle Vs SQL Server Issues
Oracle Vs SQL Server Issues
SQL Server
Oracle uses predefined names to trap predefined Oracle Server errors when exceptions are raised in PL/SQL. For example, PL/SQL raises the predefined
exception NO_DATA_FOUND if a SELECT INTO statement returns no rows, and TOO_MANY_ROWS if a SELECT INTO statement returns more than one rows.
For these two situations, SQL Server needs to use @@ROWCOUNT that returns the number of rows affected by the last statement in Transact-SQL to handle these
exceptions.
Please make sure these Oracle exceptions are handled correctly in SQL Server.
Common Errors Oracle SQL Server
When Querying Data from Tables
NO_DATA_FOUND WHEN NO_DATA_FOUND THEN IF @@ROWCOUNT = 0
statement1; BEGIN
statement1;
END;
TOO_MANY_ROWS WHEN TOO_MANY_ROWS THEN IF @@ROWCOUNT > 1
Statement2; BEGIN
Statement2;
END;
Oracle treats both ‘’ (empty string) and Null as null while SQL Server treats ‘’ as an empty string and Null as null when SET ANSI_NULLS ON.
Please make sure these two values are handled correctly in SQL Server.
Common issues Oracle SQL Server
‘’ DECLARE DECLARE
v_Test VARCHAR2(10); @v_Test VARCHAR(10);
BEGIN BEGIN
v_Test := ''; SET @v_Test = '';
IF v_Test IS NULL THEN IF @v_Test IS NULL
dbms_output.put_line('NULL'); BEGIN
ELSE PRINT 'NULL'
dbms_output.put_line('Empty String'); END
END IF; ELSE
END; BEGIN
PRINT 'Empty String'
Result: NULL END;
END;
Result: NULL
NULL Empty String ‘’
No datatype Could belong to char/varchar/nvarchar/nchar etc ...datatype
Occupy 1 bit per column for each row to state it's NULL Occupy 0 bytes
Experiment
CREATE TABLE [dbo].[ABC](
) ON [PRIMARY]
GO
GO
SELECT [AAA],[BBB]
FROM [MyDB].[dbo].[ABC];
GO