相关疑难解决方法(0)

EF无法从#temp表中选择存储过程中的返回模式

假设如下:

CREATE PROCEDURE [MySPROC]
AS 
BEGIN

CREATE TABLE #tempSubset(
    [MyPrimaryKey] [bigint]  NOT NULL,
    [OtherColumn]  [int]     NOT NULL)

INSERT INTO #tempSubset (MyPrimaryKey, OtherColumn) 
    SELECT SomePrimaryKey, SomeColumn 
    FROM   SomeHugeTable
    WHERE  LimitingCondition = true

SELECT MyPrimaryKey, OtherColumn 
FROM   #tempSubset
WHERE  SomeExpensiveCondition = true

END
Run Code Online (Sandbox Code Playgroud)

当我生成函数导入或映射返回类型时,EF不会生成复杂类型或告诉我:

选定的存储过程或函数不返回任何列

怎么克服这个?

其他答案建议使用表变量(由于性能原因不会这样做)伪造返回模式并注释掉实际存储过程,其他建议与视图类似 ...但必须有一种方法来做到这一点,而不必添加不必要的开销或要求我打破存储过程来更新模型?

stored-procedures entity-framework temp-tables

37
推荐指数
3
解决办法
2万
查看次数

动态插入变量表语句SQL Server

我有一个变量表:

DECLARE @A_Table TABLE(ID INT, att1 VARCHAR(100), att2 nvarchar(200))
Run Code Online (Sandbox Code Playgroud)

我想制作动态sql,所以我在这个表中插入了一些数据(都在循环内):

WHILE (@i <= 100) BEGIN         
  SELECT @other_att  = NAME  FROM @other_Table where ID =  @i;
  SET @sql = 'INSERT ' + @A_Table+ '(ID,att1,att2) SELECT '+CAST(@i AS VARCHAR)+' , '''+ @other_att+''', SUM('+ @other_att') FROM '+ @EVEN_OTHER_Table;
EXEC (@sql);

END 
Run Code Online (Sandbox Code Playgroud)

sql每次看起来像:

INSERT INTO @A_Table SELECT 1 , 'subject', SUM(subject)
INSERT INTO @A_Table SELECT 2 , 'age', SUM(age)
INSERT INTO @A_Table SELECT 3 , 'sex', SUM(sex).... 
Run Code Online (Sandbox Code Playgroud)

并执行此操作后:我会得到:

@A_Table:
id    att1   att2
1   subject …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008

6
推荐指数
2
解决办法
7万
查看次数