I created the below script today as an answer to one of the SQL question in EE. I thought it may come handy.
Basically, the below Stored Procedure will generate a random integer from an integer range. The code is tested using SQL Server 2005.
IF ISNULL(object_id('cspGenRandomInteger'),0)<>0 DROP PROC cspGenRandomInteger
GO
CREATE PROC cspGenRandomInteger(@MinValue int, @MaxValue int, @RandomInteger int output, @DebugMode bit=0)
AS
BEGIN
SET NOCOUNT ON
DECLARE @RandomNumber float
SELECT @RandomNumber = RAND(CONVERT(VARBINARY, NEWID()))
SELECT @RandomInteger = ((@MaxValue + 1) - @MinValue) * @RandomNumber + @MinValue
IF @DebugMode = 1 SELECT @RandomNumber RandomNumber, @RandomInteger RandomInteger
END
GO
IF ISNULL(object_id('cspGenRandomInteger'),0)<>0 GRANT EXECUTE ON cspGenRandomInteger TO PUBLIC
GO
-- Test SP
DECLARE @RandomInteger int
DECLARE @MinValue int, @MaxValue int
SELECT @MinValue = 1, @MaxValue = 10
-- Add last parameter @DebugMode=1 for debugging purposes
--EXEC cspGenRandomInteger @MinValue, @MaxValue, @RandomInteger output, 1
EXEC cspGenRandomInteger @MinValue, @MaxValue, @RandomInteger output
PRINT @RandomInteger
IF ISNULL(object_id('cspGenRandomInteger'),0)<>0 DROP PROC cspGenRandomInteger
GO
create function fnGenRandomInteger(@MinValue int, @MaxValue int, @Seed float)
ReplyDeletereturns int
as
begin
return ((@MaxValue + 1) - @MinValue) * @Seed + @MinValue
end
go
select dbo.fnGenRandomInteger(1,3,RAND(CONVERT(VARBINARY, NEWID())))