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