我在SQL Server中创建了一个自定义的表类型:
Create Type dbo.Car AS Table
(
CarNumber varchar(20) not null,
Model varchar(20) null
)
这里还有许多其他领域,这只是一个例子。
现在我有一个存储过程,需要它返回此类型的汽车列表。问题在于:我找不到一种方法来从存储过程返回用户定义的表类型。
如果我将其声明为过程中的参数,则必须为只读,因此无法对其进行赋值。如果我声明一个此类型的变量并尝试从过程中返回它,则会被拒绝。
这是我尝试过的:
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"'
什么是正确的做法?
@CarDetails
表中;或者保留插入操作,然后执行这个语句:select * from @CarDetails
。 - Rigerta