如何从存储过程返回用户定义的表类型

时间:2017-09-14 07:50:20

标签: sql-server stored-procedures

我在SQL Server中创建了一个用户定义的表类型:

@app.task()
def do_my_task():

那里还有很多其他领域,这只是一个例子。

现在我有一个存储过程,我需要它来返回此类型的Cars列表。问题在于:我找不到从存储过程返回用户定义的表类型的方法。

如果我在程序中将其声明为参数,则必须是只读的,因此我无法为其指定值。如果我从这种类型中声明一个var并尝试从它不允许的过程中返回它。

以下是我的尝试:

Create Type dbo.Car AS Table 
(
 CarNumber varchar(20) not null,
 Model varchar(20) null
)

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

您只能从存储过程中返回表值变量。

正如您所说,如果未将表值参数声明为readonly,则不能使用表值参数。

在您的简单情况下,您可以使用内联表值函数:

create function  getCarDetails( @carNumber varchar(20))
returns table
as
  return 
       select CarNumber, Model
       from dbo.cars
       where CarNumber = @carNumber;