Skip to content

Instantly share code, notes, and snippets.

@jwoschitz
Created August 5, 2011 09:06
Show Gist options
  • Save jwoschitz/1127168 to your computer and use it in GitHub Desktop.
Save jwoschitz/1127168 to your computer and use it in GitHub Desktop.
Recursion in T-SQL
/*
* Example usage
* EXEC TestRecursion 5
*
* Expected Output
* -----5 - NESTED LEVEL: 1
* ----4 - NESTED LEVEL: 2
* ---3 - NESTED LEVEL: 3
* --2 - NESTED LEVEL: 4
* -1 - NESTED LEVEL: 5
* 0 - NESTED LEVEL: 6
*/
CREATE PROC TestRecursion
@level INT
AS
DECLARE @level_below INT
SET NOCOUNT ON;
IF (@level < 0 OR @level > 31)
BEGIN
PRINT 'Value must be between 0 and 31 (SQL Server does not allow more than 32 nested stored procedure levels).'
RETURN
END
IF (@level = 0)
BEGIN
PRINT CONVERT(VARCHAR,@level) + + ' - NESTED LEVEL: ' + CAST(@@NESTLEVEL AS VARCHAR(20))
END
ELSE
BEGIN
SET @level_below = @level - 1
PRINT REPLICATE('-',@level) + CONVERT(VARCHAR,@level) + ' - NESTED LEVEL: ' + CAST(@@NESTLEVEL AS VARCHAR(20))
EXEC TestRecursion @level_below
IF @@ERROR <> 0 RETURN
END
GO
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment