変数で生成した文字列から SQL クエリを実行しようとしています。このSPはSelectクエリを生成し、このクエリを手動で実行すると機能しますが、SPにあると次のようなエラーが発生します
メッセージ 911、レベル 16、状態 4、プロシージャ sp_Products_Select、行 26
データベース 'SELECT *,(SectionID = Products のセクションからセクションを選択' が存在しません。名前が正しく入力されていることを確認してください。
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)
そして私のSPは、
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
SP からこのクエリを正しく実行するにはどうすればよいですか?