Java 저장 프로시저에서 테이블 형식 데이터 반환하기¶
테이블 형식으로 데이터를 반환하는 프로시저를 작성할 수 있습니다. 테이블 형식 데이터를 반환하는 프로시저를 작성하려면 다음을 수행하십시오.
CREATE PROCEDURE 문에서 프로시저의 반환 유형으로
TABLE(...)을 지정합니다.반환된 데이터의 열 이름과 유형 을 알고 있는 경우 이들을 TABLE 매개 변수로 지정할 수 있습니다. 프로시저를 정의할 때 반환된 열을 모르는 경우(예: 런타임에 지정된 경우) TABLE 매개 변수를 생략할 수 있습니다. 그렇게 하면 프로시저의 반환 값 열이 해당 처리기에서 반환된 데이터 프레임의 열에서 변환됩니다. 열 데이터 타입은 SQL-Java 데이터 타입 매핑 에 지정된 매핑에 따라 SQL로 변환됩니다.
Snowpark DataFrame에서 테이블 형식 결과를 반환하도록 처리기를 작성합니다.
데이터 프레임에 대한 자세한 내용은 Snowpark Java에서 DataFrame 작업하기 섹션을 참조하십시오.
참고
다음 중 하나가 충족되는 경우 프로시저는 런타임 시 오류를 생성합니다.
TABLE을 반환 유형으로 선언하지만 처리기는 DataFrame을 반환하지 않습니다.
처리기는 DataFrame을 반환하지만 프로시저는 TABLE을 반환 유형으로 선언하지 않습니다.
예¶
이 섹션의 예에서는 열이 문자열과 일치하는 행을 필터링하는 프로시저에서 테이블 형식 값을 반환하는 방법을 보여줍니다.
데이터 정의하기¶
다음은 직원 테이블을 생성하는 코드 예제입니다.
행을 필터링하는 프로시저 선언하기¶
다음 두 예제의 코드로 테이블 이름과 역할을 인자로 취하여 역할 열 값이 인자로 지정된 역할과 일치하는 테이블의 행을 반환하는 저장 프로시저를 생성할 수 있습니다.
반환 열 이름 및 유형 지정하기¶
이 예에서는 RETURNS TABLE() 문에 열 이름과 유형을 지정합니다.
참고
현재, RETURNS TABLE(...) 절에서는 GEOGRAPHY 를 열 유형으로 지정할 수 없습니다. 이는 저장 프로시저를 생성하든 익명 프로시저를 생성하든 관계없이 적용됩니다.
GEOGRAPHY를 열 유형으로 지정하려고 할 경우 저장 프로시저를 호출하면 오류가 발생합니다.
이 문제를 해결하려면 RETURNS TABLE() 에서 열 인자와 유형을 생략하면 됩니다.
반환 열 이름 및 유형 생략하기¶
다음 예제의 코드에서는 처리기의 반환 값에 있는 열에서 반환 값 열 이름 및 유형을 추정할 수 있도록 하는 프로시저를 선언합니다. 이 코드는 RETURNS TABLE() 문에서 열 이름과 유형을 생략합니다.
프로시저 호출하기¶
다음 예에서는 저장 프로시저를 호출합니다.
프로시저를 호출하면 다음 출력이 생성됩니다.