You need to define your WITH CTE before calling the SQL:
WITH TableList (tableId)
AS
(
SELECT tableId FROM OldTable WHERE tableId=5 and IsDeleted = 0
UNION ALL
SELECT t.tableId From OldTable as t
INNER JOIN TableList as p
ON t.ParenTableId = p.TableId
WHERE t.IsDeleted = 0
)
SELECT *
FROM TestTable
WHERE tableId in
(
SELECT tableId FROM TableList
)
EDIT -- Based on your comments, you could define your Recursive CTE in a VIEW and then use as needed:
CREATE VIEW YourView AS
WITH TableList (tableId)
AS
(
SELECT tableId FROM OldTable WHERE tableId=5 and IsDeleted = 0
UNION ALL
SELECT t.tableId From OldTable as t
INNER JOIN TableList as p
ON t.ParenTableId = p.TableId
WHERE t.IsDeleted = 0
)
SELECT *
FROM TableList;