我想从一个字符串执行一个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'部分。 –