Click here to Skip to main content
15,889,216 members
Please Sign up or sign in to vote.
1.00/5 (2 votes)
See more:
Following is my Stored Procedure which has many joins. It created successfully... But When I am going execute it , it gives me following error...

The statement terminated. The maximum recursion 100 has been exhausted before statement completion.
Please solve my problem.

SQL
USE [Db_GoldenCoin]
GO
/****** Object:  StoredProcedure [dbo].[getDownLineWithPaging]    Script Date: 04/06/2016 23:28:02 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[getDownLineWithPaging]
@SearchTerm varchar(100)='',
@PageIndex int=1,
@PageSize int=10,
@mid varchar(20),
@RecordCount int Output
AS
Begin
set NOCOUNT ON;
with DownLineCTE as
(
SELECT tbl_MemberTransaction.MemberId, tbl_MemberTransaction.PlacemMentID
from tbl_MemberTransaction
where tbl_MemberTransaction.PlacemMentID=@mid

UNION ALL

SELECT tbl_MemberTransaction.MemberId, tbl_MemberTransaction.PlacemMentID
FROM tbl_MemberTransaction
JOIN DownLineCTE
ON tbl_MemberTransaction.PlacemMentID=DownLineCTE.MemberId
)

SELECT ROW_NUMBER() OVER
(
ORDER BY m.MemberId ASC
)AS RowNumber,
m.MemberId, MemberName=m.MemberFirstName+' '+ m.MemberLastName,t.SponceID,t.PlacemMentID, m.MobileNumber,pc.PkgName,JoiningDate=CONVERT(VARCHAR(10), m.JoiningDate, 103) 
INTO #Results 
FROM DownLineCTE as ct
LEFT join tbl_MemberMaster as m
ON m.MemberId=ct.MemberId
LEFT JOIN tbl_MemberTransaction as t
ON m.MemberId= t.MemberId
LEFT JOIN tbl_PINDetails as pd
ON m.SecurityPIN = pd.PIN
LEFT JOIN tbl_PinTransferTbl as pt
ON pd.TransferId= pt.PinTransferId
LEFT JOIN tbl_PackageMaster pc
ON pt.PackageId= pc.PkgId
WHERE m.MemberId LIKE @SearchTerm +'%' OR m.MemberFirstName LIKE @SearchTerm +'%'
OR m.MemberLastName LIKE @SearchTerm + '%' OR m.MobileNumber LIKE @SearchTerm +'%'
OR t.SponceID LIKE @SearchTerm + '%' OR t.PlacemMentID LIKE @SearchTerm + '%'

SELECT @RecordCount=COUNT(*)
  FROM #Results
          
      SELECT * FROM #Results 
      WHERE RowNumber BETWEEN(@PageIndex -1) * @PageSize + 1 AND(((@PageIndex -1) * @PageSize + 1) + @PageSize) - 1
    
      DROP TABLE #Results

      
END
Posted
Updated 25-Jan-16 7:22am
v2
Comments
ZurdoDev 25-Jan-16 13:20pm    
You have recursion you need to fix. Do you understand the error?
Veeshal Mali 25-Jan-16 13:26pm    
yes sir, I have understand. I found the solution to put option (maxrecursion 0).
But I cant understand where I have to put option (maxrecursion 0). So please let me know how to fix it.

1 solution

The error indeed can be a bit confusing, as you didn't really wrote a recursion...But you use CTE and that's actually a kind of recursion (or at least it is implemented that way).
If not defined otherwise a simple CTE can have up to 100 records only...
Use MAXRECURSION to set it larger or infinite (0)...
WITH common_table_expression (Transact-SQL)[^]
 
Share this answer
 
Comments
[no name] 25-Jan-16 13:40pm    
A 5 for this very interesting Information. I Need to dive into more deep.
Kornfeld Eliyahu Peter 25-Jan-16 13:44pm    
Thank you...
https://en.wikipedia.org/wiki/Hierarchical_and_recursive_queries_in_SQL
https://www.mssqltips.com/sqlservertip/1520/recursive-queries-using-common-table-expressions-cte-in-sql-server/
http://www.practicalsqldba.com/2012/08/sql-server-how-recursive-common-table.html
http://explainextended.com/2009/11/18/sql-server-are-the-recursive-ctes-really-set-based/
http://sqlblog.com/blogs/adam_machanic/archive/2015/04/07/re-inventing-the-recursive-cte.aspx
[no name] 25-Jan-16 13:57pm    
Thank you again.
Bruno

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900