This is a good solution.
````sql
CREATE OR ALTER FUNCTION [dbo].[Sleep](@seconds INT)
RETURNS INT AS
BEGIN
DECLARE @startTime DATETIME2(7) = SYSDATETIME();
DECLARE @endTime DATETIME2(7) = DATEADD(SECOND, @seconds, @startTime);
WHILE (SYSDATETIME() < @endTime)
SET @startTime = @startTime;
RETURN @seconds;
END
GO
CREATE OR ALTER VIEW dbo.SlowView AS
SELECT
[dbo].[Sleep](5) AS DELAY,
NEWID() AS VALUE
GO
SELECT * FROM SlowView
````
This is a good solution.
```SQL
CREATE OR ALTER FUNCTION [dbo].[Sleep](@seconds INT)
RETURNS INT AS
BEGIN
DECLARE @startTime DATETIME2(7) = SYSDATETIME();
DECLARE @endTime DATETIME2(7) = DATEADD(SECOND, @seconds, @startTime);
WHILE (SYSDATETIME() < @endTime)
SET @startTime = @startTime;
RETURN @seconds;
END
GO
CREATE OR ALTER VIEW dbo.SlowView AS
SELECT
[dbo].[Sleep](5) AS DELAY,
NEWID() AS VALUE
GO
SELECT * FROM SlowView
````