我想從一個字符串執行一個SQL查詢,我用變量生成。該SP產生一個選擇查詢,當我手動執行這個查詢它的工作原理,但是當它在SP有像SQL查詢字符串
消息911,級別16,狀態4,過程sp_Products_Select錯誤,第26行
數據庫「 SELECT *(選擇部分與部分,其中SectionID = 產品不存在。請確保名稱輸入正確 。
從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正確執行這個查詢?
只需照顧你的'AND CategoryID = @CategoryID'部分。 –