我们可以从函数而不是表变量返回临时表吗?

时间:2010-10-21 15:02:59

标签: sql-server temp-tables

我有一个函数...其中我有返回类型作为表变量... 但是如果我们使用临时表,性能会提高......因为我们有更多的数据。

4 个答案:

答案 0 :(得分:2)

不,你不能“返回”临时表 - 你可以在调用函数之前创建临时表,并让你的函数将数据写入临时表。

但这有一种变得相当混乱的倾向....你需要确保在调用函数之前创建临时表.....

你真的,老实说衡量两种方法的表现吗?我不认为临时表总是更快......使用表变量的方法对我来说似乎更清晰,更直观。

答案 1 :(得分:1)

你当然不能返回临时表。但您可以在调用存储过程中定义它。请记住,对存储过程起作用。您无法从函数中访问临时表。

答案 2 :(得分:0)

您可以使用返回实际表的CLR表值函数。 CLR函数是您可以用您的母语C#,VB等编写的函数,并且dll嵌入在数据库中。

从这里了解更多信息:

http://msdn.microsoft.com/en-us/library/ms131103.aspx

答案 3 :(得分:0)

这几乎涵盖了利弊和示例代码的每一种方式:

How to Share Data Between Stored Procedures by Erland Sommarskog

Using OUTPUT Parameters
Table-valued Functions
    Inline Functions
    Multi-statement Functions
Using a Table
    Sharing a Temp Table
    Process-keyed Table
    Global Temp Tables
INSERT-EXEC
Table Parameters and Table Types
Using the CLR
OPENQUERY
Using XML
Using Cursor Variables