Sql server 将数据透视查询添加到存储过程时出错,但在“查询生成器”窗口中运行“确定”

Sql server 将数据透视查询添加到存储过程时出错,但在“查询生成器”窗口中运行“确定”,sql-server,stored-procedures,Sql Server,Stored Procedures,当我将此查询作为常规SQL运行时,它运行良好,我得到了正确的结果。现在,我想让用户添加一些日期,例如@dtFROM和@dtTO日期,从而使此查询成为动态查询。这些是我的应用程序中的用户提供日期。现在,我试图在SQLServer中创建一个存储过程来运行它,但这是一个错误,它被错误地放置了。我查看了这一部分并测试了查询,但没有成功 CREATE PROCEDURE dbo.[usp_Cleaner_KG_per_Date] @dtFrom datetime, @dtTo datetime AS B

当我将此查询作为常规SQL运行时,它运行良好,我得到了正确的结果。现在,我想让用户添加一些日期,例如@dtFROM和@dtTO日期,从而使此查询成为动态查询。这些是我的应用程序中的用户提供日期。现在,我试图在SQLServer中创建一个存储过程来运行它,但这是一个错误,它被错误地放置了。我查看了这一部分并测试了查询,但没有成功

CREATE PROCEDURE dbo.[usp_Cleaner_KG_per_Date]
@dtFrom datetime,
@dtTo datetime

AS
BEGIN
SET NOCOUNT ON;
DECLARE @query VARCHAR(4000)
DECLARE @Packdate VARCHAR(2000)

SELECT  @Packdate = STUFF(( SELECT DISTINCT
                        '],[' + ((LEFT(CONVERT(VARCHAR, PackDate, 120), 10)))
                        FROM    vw_CleanerSummary2015 where (PackDate >= @dtFROM) and (Packdate <= @dtTO)
                        ORDER BY '],[' + ((LEFT(CONVERT(VARCHAR, PackDate, 120), 10)))
                        FOR XML PATH('')
                        ), 1, 2, '') + ']'

SET @query = 'SELECT * FROM
(
SELECT     ID,KG,PackDate
FROM         vw_CleanerSummary2015
GROUP BY Packdate,ID,[KG/HR]
)t
PIVOT (sum(KG) FOR Packdate
in ('+@Packdate+')) AS pvt'

EXECUTE (@query)

如果这是您的全部过程代码,则问题可能是您在执行以匹配开始开始之后缺少结束结束。

您是否在SET语句之后的@query中获取了值并成功运行了该语句?是的。它运行成功。下面是SQL管理器的错误:Msg 102,级别15,状态1,过程usp\u Cleaner\u KG\u per\u Date,第28行附近语法不正确。谢谢。这就解决了问题。业余的错误。