Tip of the Day : Convert Oracle Date Functions to SQL Server Date Functions

SQL Server Helper - Tip of the Day

How to Call NEWID Function in a User-Defined Function

Since the NEWID() function is a non-deterministic function, this function cannot be called directly from a user-defined function.  One way to work around this limitation is to call the function indirectly through a view.

First create a view that calls the NEWID() function:

CREATE VIEW [dbo].[Random] 
AS
SELECT NEWID() AS [RandomID]

Since a view can be accessed from a user-defined function, a function can now be created that will indirectly call the NEWID() function through the view:

CREATE FUNCTION [dbo].[ufn_GenerateRandomNumber]()
RETURNS INT
AS
BEGIN
 DECLARE @RandomNumber   INT
 SELECT @RandomNumber = ABS(CAST(CAST([RandomID] AS VARBINARY) AS INT))
 FROM [dbo].[Random]
 RETURN @RandomNumber
END

Now to use this user-defined function that calls the NEWID() function indirectly:

SELECT [dbo].[ufn_GenerateRandomNumber]()

Back to Tip of the Day List Next Tip