我试图在我的SQL Server 2005 Express中,向一个存储过程添加TableAdapter。然而,该存储过程使用了一个名为#temp的临时表。当创建TableAdapter时,Visual Studio会提示“未知对象'#temp'”并且说该存储过程返回0列。这很麻烦,因为我需要将此存储过程与Crystal报表一起使用,并需要这些列。
我该如何解决这个问题?
我试图在我的SQL Server 2005 Express中,向一个存储过程添加TableAdapter。然而,该存储过程使用了一个名为#temp的临时表。当创建TableAdapter时,Visual Studio会提示“未知对象'#temp'”并且说该存储过程返回0列。这很麻烦,因为我需要将此存储过程与Crystal报表一起使用,并需要这些列。
我该如何解决这个问题?
很奇怪。根据这里的说法,你需要添加
IF 1=0 BEGIN
SET FMTONLY OFF
END
我将SP部分的位置放在AS部分之后,Visual Studio就没有问题了。我不知道为什么它会这样工作,或者为什么它会起作用,但它确实起作用。
这可能是一个旧的帖子,答案已经被找到了,但是当有人在你的存储过程中看到这段代码时,他真的不理解。还有另一种正确的方法,就是将表格声明为变量,像这样:
DECLARE @temp TABLE
(
SomeText1 nvarchar(255),
SomeText2 nvarchar(255)
)
另外,不要忘记在结尾处删除DROP TABLE语句。
附注:如果您真的需要使用临时表,因为您需要创建它,则必须编写先前答案中给出的代码。希望这可以帮助您。