Sql server 更新过程“存储过程不返回列”时实体框架错误

Sql server 更新过程“存储过程不返回列”时实体框架错误,sql-server,entity-framework,Sql Server,Entity Framework,我有一个带有动态列的存储过程。当我在实体框架中更新存储过程时,我得到了一个错误 存储过程不返回任何列 我在google中搜索,我被添加到我的存储过程中,但我仍然没有得到Entity Framework中的列 我的问题是这样的: DECLARE @cols VARCHAR(MAX) ;WITH CTE AS ( SELECT ROW_NUMBER() OVER(PARTITION BY #ResourceUtilization.[DAY] ORDER BY #ResourceUtilizat

我有一个带有动态列的存储过程。当我在实体框架中更新存储过程时,我得到了一个错误

存储过程不返回任何列

我在google中搜索,我被添加到我的存储过程中,但我仍然没有得到Entity Framework中的列

我的问题是这样的:

DECLARE @cols VARCHAR(MAX) 
;WITH CTE AS ( 
SELECT ROW_NUMBER() OVER(PARTITION BY #ResourceUtilization.[DAY] 
ORDER BY #ResourceUtilization.[DAY]) AS rowNbr, 
#ResourceUtilization.[DAY] 
FROM #ResourceUtilization ) 
SELECT @cols=STUFF ( ( SELECT ',' +QUOTENAME([DAY]) 
                       FROM CTE 
                       WHERE CTE.rowNbr=1 FOR XML PATH('') ) ,1,1,'')

DECLARE @query NVARCHAR(4000)=
N'SELECT
DEPT_NAME,
EMP_NAME,
DESIGNATION,' + @cols +' 

FROM
(
    SELECT
        RU.DEPT_NAME,
        RU.EMP_NAME,
        RU.DESIGNATION,
        RU.[DAY],
        (
            CAST(RU.FIRST_SHIFT AS VARCHAR(10))+'',''+
            CAST(RU.SECOND_SHIFT AS VARCHAR(10))+'',''+
            CAST(RU.THIRD_SHIFT AS VARCHAR(10))+'',''+
            CAST(RU.GENERAL_SHIFT AS VARCHAR(10))
        ) AS SHIFT
    FROM
        #ResourceUtilization RU
) AS p
PIVOT
(
    MAX(SHIFT) FOR [DAY] IN('+@cols+')
) AS pvt'
EXECUTE(@query)

请任何人帮助我。

您计划如何将@cols传递给您的查询?@cols的声明在哪里?声明@cols VARCHARMAX;将CTE设置为SELECT ROW_NUMBER OVERPARTITION BY ResourceUtilization.[DAY]按ResourceUtilization排序。[DAY]设置为rowNbr,ResourceUtilization.[DAY]从ResourceUtilization选择@cols=STUFF SELECT','+QUOTENAME[DAY]在CTE中,CTE.rowNbr=1表示XML路径1,1,您可以在执行和分析查询之前打印查询。当每次执行响应的形状都发生变化时,Entity Framework应该如何映射此存储过程的结果?这是一个非常糟糕的设计-不要做这样的事情!一个存储过程应该做一件事,只做一件事,并且应该返回定义良好的固定数据形状。您好,您说的是对的,但是如何创建一个过程。请告诉我。