source

SQL Server 2008 - 테이블 값 함수에서 사용자 정의 테이블 유형을 반환하는 방법

lovecheck 2023. 6. 26. 21:27
반응형

SQL Server 2008 - 테이블 값 함수에서 사용자 정의 테이블 유형을 반환하는 방법

다음은 사용자 정의 테이블 유형입니다.

CREATE TYPE [dbo].[FooType] AS TABLE(
 [Bar] [INT],
)

다음은 테이블 값 함수에서 유형을 반환하기 위해 수행해야 했던 작업입니다.

CREATE FUNCTION [dbo].[GetFoos]
RETURN @FooTypes TABLE ([Bar] [INT])
INSERT INTO @FooTypes (1)
RETURN

기본적으로 저는 함수의 RETURN 문에 제 유형 정의를 다시 선언해야 합니다.RETURN 문에 유형을 간단히 선언할 수 있는 방법이 있습니까?

이게 효과가 있을 거라고 생각했을 겁니다

CREATE FUNCTION [dbo].[GetFoos]
RETURN @FooTypes [FooType]
INSERT INTO @FooTypes (1)
RETURN

이와 관련하여 MSDN/Google에서 도움을 찾을 수 없습니다. 아무도 없습니까?

편집

저는 제 대답을 표시하지 않았고, 6개월 후에 같은 시나리오를 마주하고 있기 때문에 이 질문에 부딪혔습니다.

테이블 값 함수에서 사용자 정의 테이블 유형을 반환할 수 있는지 아는 사람이 있습니까?그렇지 않다면 제가 한 것 외에 더 나은 해결 방법이 있을까요?(유형을 다시 입력합니다.)

함수에서 UDTT를 반환할 수는 없지만 스키마가 일치하는 한 테이블 변수를 반환하고 UDTT로 수신할 수 있습니다.다음 코드는 SQL Server 2008 R2에서 테스트되었습니다.

UDTT 만들기

CREATE TYPE dbo.MyCustomUDDT AS TABLE
(
    FieldOne varchar (512),
    FieldTwo varchar(1024)
)

변수 선언

DECLARE @uddt MyCustomUDDT;
DECLARE @Modifieduddt MyCustomUDDT;

함수 호출

INSERT INTO @Modifieduddt SELECT * FROM dbo.MyUDF(@uddt);

함수 서명

CREATE FUNCTION dbo.MyUDF(@localUDDT MyCustomUDDT)
RETURNS @tableVar TABLE
(
    FieldOne varchar (512),
    FieldTwo varchar(1024)
)
AS
BEGIN
 --Modify your variable here
RETURN
END

이것이 누군가에게 도움이 되기를 바랍니다.

좋아요 - 그래서 할 수 없어요.

스크립트를 사용하여 테이블 정의를 반환 형식으로 복제할 수 있습니다.

여전히 - 이 문제가 SQL Server의 다음 버전에서 해결되기를 바랍니다.

CREATE FUNCTION의 구문은 테이블 반환 유형을 정의하는 유일한 방법이 열과 유형을 나열하는 것임을 나타냅니다.<table_type_definition>SQL Server "Denali"에도 다음과 같은 정의가 있습니다.<table_type_definition>이상하게도 구문에는 다중 문 표 값 함수나 이 조각을 참조하는 다른 함수가 포함되어 있지 않습니다.

나는 이것이 가능하다고 생각하지 않습니다.UDTT는 스칼라 값이 아니므로 스칼라 값 함수의 반환 형식으로 사용할 수 없습니다.또한 테이블 값 함수의 테이블 선언을 UDTT로 바꿀 수 없습니다.테이블 정의를 반복하는 것이 유일한 옵션인 것 같습니다.당신이 왜 이런 짓을 하는지 안다면 다른 방법을 찾을 수 있을 겁니다

언급URL : https://stackoverflow.com/questions/3089553/sql-server-2008-how-do-i-return-a-user-defined-table-type-from-a-table-valued

반응형