gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 17:49:35 24 4
gpt4 key购买 nike

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

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

还有很多其他的字段,这只是一个例子。

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

如果我在过程中将它声明为参数,它必须是只读的,所以我不能给它赋值。如果我从这种类型声明一个 var 并尝试从它不允许的过程中返回它。

这是我尝试过的:

Create procedure getCarDetails
@carNumber varchar(20)
AS
BEGIN
SET NOCOUNT ON;

Declare @CarDetails AS dbo.Car

insert into @CarDetails (CarNumber,Model)
select CarNumber, Model
from cars
where cars.CarNumber = @carNumber

-- here I need to return the @CarDetails
-- if I try
-- return @CarDetails
-- It says 'must declare the scalar variable "@CarDetails"'

正确的做法是什么?

最佳答案

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

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

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

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

关于sql-server - 如何从存储过程返回用户定义的表类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46213431/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com