2017-09-14 2 views
1

에서 사용자 정의 테이블 형식을 반환하는 방법은 SQL 서버의 사용자 정의 테이블 형식 생성 :저장 프로 시저

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

이 다른 많은 분야가 있습니다를, 이것은 단지 예입니다.

이제는이 유형의 Cars 목록을 반환하는 데 필요한 저장 프로 시저가 있습니다. 여기에 문제가 있습니다 : 사용자 정의 테이블 형식을 저장 프로 시저에서 반환하는 방법을 찾을 수 없습니다.

프로 시저에서 매개 변수로 선언하면 읽기 전용이어야하므로 값을 할당 할 수 없습니다. 그리고 만약이 타입에서 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"' 

그 일을의 올바른 방법은 무엇입니까 : 여기

내가 시도 무엇인가?

+2

을 당신도 그냥 다음 CarDetails' 테이블 @'이에 삽입 또는 당신의 삽입을 유지하고하지 않고를 선택해야합니까 수 :'선택 * from @ CarDetails'. –

답변

1

저장 프로 시저에서 테이블 반환 변수를 반환 할 수 없습니다.

앞에서 말한 것처럼 readonly으로 선언되지 않은 경우 테이블 반환 매개 변수를 사용할 수 없습니다. 대신 인라인 테이블 반환 함수 사용할 수있는 간단한 경우

:

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