I'm trying to execute an SQL Query from a string that I generate with variables. This SP produces a Select query and when I execute this query manually it works, but when it's in SP there is an error like
Msg 911, Level 16, State 4, Procedure sp_Products_Select, Line 26
Database 'SELECT *,(Select Section From Sections Where SectionID = Products' does not exist. Make sure that the name is entered correctly.
The query that generated from SP
SELECT
*,
(Select Section
From Sections
Where SectionID = dbo.Products.SectionID) as Section,
(Select Category
From Categories
Where CategoryID = Products.CategoryID) as Category
FROM
Products
WHERE
1 = 1AND (Status = 1 OR Status = 0)
And my SP is,
ALTER PROC [dbo].[sp_Products_Select]
@ProductID int,
@Status int,
@CategoryID int,
@SectionID int
AS
DECLARE @SQL varchar(500)
SET @SQL ='SELECT *,(Select Section From Sections Where SectionID = Products.SectionID) as Section,(Select Category From Categories Where CategoryID = Products.CategoryID) as Category FROM Products WHERE 1 = 1';
IF @ProductID <> '0' BEGIN
SET @SQL += 'AND ProductID = @ProductID';
END
IF @Status <> 0 BEGIN
SET @SQL += 'AND Status = @Status';
END ELSE BEGIN
SET @SQL += 'AND (Status = 1 OR Status = 0)';
END
IF @CategoryID <> '0' BEGIN
SET @SQL += 'AND CategoryID = @CategoryID';
END
IF @SectionID <> '0' BEGIN
SET @SQL += 'AND SectionID = @SectionID';
END
EXEC @SQL
How can I execute this query from SP correctly?