쿠키 기본 설정 선택

당사는 사이트와 서비스를 제공하는 데 필요한 필수 쿠키 및 유사한 도구를 사용합니다. 고객이 사이트를 어떻게 사용하는지 파악하고 개선할 수 있도록 성능 쿠키를 사용해 익명의 통계를 수집합니다. 필수 쿠키는 비활성화할 수 없지만 '사용자 지정' 또는 ‘거부’를 클릭하여 성능 쿠키를 거부할 수 있습니다.

사용자가 동의하는 경우 AWS와 승인된 제3자도 쿠키를 사용하여 유용한 사이트 기능을 제공하고, 사용자의 기본 설정을 기억하고, 관련 광고를 비롯한 관련 콘텐츠를 표시합니다. 필수가 아닌 모든 쿠키를 수락하거나 거부하려면 ‘수락’ 또는 ‘거부’를 클릭하세요. 더 자세한 내용을 선택하려면 ‘사용자 정의’를 클릭하세요.

CALL - Amazon Redshift

CALL

저장 프로시저를 실행합니다. CALL 명령에는 프로시저 이름과 입력 인수 값이 포함되어야 합니다. CALL 문을 사용하여 저장 프로시저를 호출해야 합니다.

참고

CALL은 정규 쿼리의 일부일 수 없습니다.

구문

CALL sp_name ( [ argument ] [, ...] )

파라미터

sp_name

실행할 프로시저의 이름입니다.

인수

입력 인수의 값입니다. 이 파라미터도 함수 이름일 수 있습니다(예: pg_last_query_id()). 쿼리를 CALL 인수로 사용할 수 없습니다.

사용 노트

Amazon Redshift 저장 프로시저는 다음 설명에 따라 중첩 및 재귀 호출을 지원합니다. 또한 다음 설명에 따라 드라이버 지원이 최신인지 확인합니다.

중첩 호출

Amazon Redshift 저장 프로시저는 중첩 및 재귀 호출을 지원합니다. 허용되는 중첩 수준의 최대 수는 16개입니다. 중첩 호출은 비즈니스 로직을 더 작은 프로시저로 캡슐화할 수 있습니다. 그러면 이를 여러 호출자가 공유할 수 있습니다.

출력 파라미터가 있는 중첩 프로시저를 호출하면 내부 프로시저가 INOUT 인수를 정의해야 합니다. 이 경우 내부 프로시저는 상수가 아닌 변수로 전달됩니다. OUT 인수는 허용되지 않습니다. 내부 호출의 출력을 보관하는 데 변수가 필요하기 때문에 이 동작이 발생합니다.

내부 프로시저와 외부 프로시저 간의 관계는 SVL_STORED_PROC_CALLfrom_sp_call 열에 기록됩니다.

다음 예에서는 INOUT 인수를 통해 변수를 중첩 프로시저 호출로 전달하는 것을 보여 줍니다.

CREATE OR REPLACE PROCEDURE inner_proc(INOUT a int, b int, INOUT c int) LANGUAGE plpgsql AS $$ BEGIN a := b * a; c := b * c; END; $$; CREATE OR REPLACE PROCEDURE outer_proc(multiplier int) LANGUAGE plpgsql AS $$ DECLARE x int := 3; y int := 4; BEGIN DROP TABLE IF EXISTS test_tbl; CREATE TEMP TABLE test_tbl(a int, b varchar(256)); CALL inner_proc(x, multiplier, y); insert into test_tbl values (x, y::varchar); END; $$; CALL outer_proc(5); SELECT * from test_tbl; a | b ----+---- 15 | 20 (1 row)

드라이버 지원

Java Database Connectivity(JDBC) 및 Open Database Connectivity(ODBC) 드라이버를 Amazon Redshift 저장 프로시저를 지원하는 최신 버전으로 업그레이드하는 것이 좋습니다.

클라이언트 도구가 CALL 문을 통해 서버로 전달하는 드라이버 API 작업을 사용하는 경우 기존 드라이버를 사용할 수 있습니다. 출력 파라미터(있는 경우)는 한 행의 결과 세트로 반환됩니다.

Amazon Redshift JDBC 및 ODBC 드라이버의 최신 버전은 저장 프로시저 검색에 대해 메타데이터 지원을 제공합니다. 또한 사용자 지정 Java 애플리케이션에 대한 CallableStatement 지원도 제공합니다. 드라이버에 대한 자세한 내용은 Amazon Redshift 관리 가이드SQL 클라이언트 도구를 사용하여 Amazon Redshift 클러스터에 연결 섹션을 참조하세요.

다음 예제에서는 저장 프로시저 호출에 JDBC 드라이버의 여러 API 작업을 사용하는 방법을 보여 줍니다.

void statement_example(Connection conn) throws SQLException { statement.execute("CALL sp_statement_example(1)"); } void prepared_statement_example(Connection conn) throws SQLException { String sql = "CALL sp_prepared_statement_example(42, 84)"; PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.execute(); } void callable_statement_example(Connection conn) throws SQLException { CallableStatement cstmt = conn.prepareCall("CALL sp_create_out_in(?,?)"); cstmt.registerOutParameter(1, java.sql.Types.INTEGER); cstmt.setInt(2, 42); cstmt.executeQuery(); Integer out_value = cstmt.getInt(1); }

예시

다음 예제에서는 프로시저 이름 test_spl를 호출합니다.

call test_sp1(3,'book'); INFO: Table "tmp_tbl" does not exist and will be skipped INFO: min_val = 3, f2 = book

다음 예제에서는 프로시저 이름 test_spl2를 호출합니다.

call test_sp2(2,'2019'); f2 | column2 ---------------------+--------- 2019+2019+2019+2019 | 2 (1 row)

다음 주제:

CANCEL

이전 주제:

BEGIN
프라이버시사이트 이용 약관쿠키 기본 설정
© 2025, Amazon Web Services, Inc. 또는 계열사. All rights reserved.