为什么我的数据集不喜欢临时表?

11

我试图在我的SQL Server 2005 Express中,向一个存储过程添加TableAdapter。然而,该存储过程使用了一个名为#temp的临时表。当创建TableAdapter时,Visual Studio会提示“未知对象'#temp'”并且说该存储过程返回0列。这很麻烦,因为我需要将此存储过程与Crystal报表一起使用,并需要这些列。

我该如何解决这个问题?

2个回答

35

很奇怪。根据这里的说法,你需要添加

IF 1=0 BEGIN
    SET FMTONLY OFF
END

我将SP部分的位置放在AS部分之后,Visual Studio就没有问题了。我不知道为什么它会这样工作,或者为什么它会起作用,但它确实起作用。


2
有人可能今天心情不好。这对我很有帮助。+1 - Lieven Keersmaekers
我只能说……哇。这很有效。对我来说这是一件大事情。我使用需要针对每个运行实例都是唯一的临时表。不能让其他工作站上的表被覆盖。我需要临时表与我的存储过程一起工作。谢谢。 - Rudy Hinojosa

2

这可能是一个旧的帖子,答案已经被找到了,但是当有人在你的存储过程中看到这段代码时,他真的不理解。还有另一种正确的方法,就是将表格声明为变量,像这样:

DECLARE @temp TABLE  
(
    SomeText1 nvarchar(255),
    SomeText2 nvarchar(255)
)

另外,不要忘记在结尾处删除DROP TABLE语句。

附注:如果您真的需要使用临时表,因为您需要创建它,则必须编写先前答案中给出的代码。希望这可以帮助您。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接