dbcall

JDBC를 통해 외부 데이터베이스의 저장 프로시저를 호출합니다. SQL 문장에 콜론(:)으로 시작하는 입력 매개변수와 출력 매개변수를 정의할 수 있습니다.

명령어 속성

항목설명
명령어 유형드라이버 쿼리
필요 권한없음
라이선스 사용량집계함
병렬 실행미지원
분산 실행미지원

문법

dbcall PROFILE SQL

대상

PROFILE
JDBC 프로파일 이름. 쿼리 매개변수로 지정할 수 있습니다. JDBC 프로파일은 사전에 등록되어 있어야 합니다.
SQL
저장 프로시저 호출 SQL 문장. 입력 매개변수와 출력 매개변수를 포함할 수 있습니다.
  • 입력 매개변수: :name 형식으로 지정합니다. set 명령어로 정의한 쿼리 매개변수 값이 대입됩니다.
  • 출력 매개변수: :name(type) 형식으로 지정합니다. typevarchar, int, datetime 중 하나를 사용합니다.

출력 필드

저장 프로시저의 반환 형태에 따라 출력 필드가 결정됩니다.

  • 출력 매개변수를 정의한 경우, 출력 매개변수 이름이 필드 이름이 됩니다.
  • 결과 집합을 반환하는 경우, 결과 집합의 컬럼 이름이 필드 이름이 됩니다.
  • 결과 집합과 출력 매개변수를 모두 반환하는 경우, 결과 집합의 컬럼과 출력 매개변수가 합쳐진 필드가 출력됩니다.

출력 필드의 이름과 타입은 저장 프로시저 정의에 따라 동적으로 결정됩니다.

오류 코드

파싱 오류
오류 코드메시지설명
12000유효하지 않은 JDBC 프로파일 이름: [이름]지정한 JDBC 프로파일이 존재하지 않는 경우
12001JDBC 프로파일 사용 권한이 없습니다.현재 사용자에게 해당 JDBC 프로파일 권한이 없는 경우
12002쿼리 매개변수가 정의되지 않았습니다.입력 매개변수에 대응하는 쿼리 매개변수가 없는 경우
런타임 오류

해당 사항 없음

설명

dbcall 명령어는 JDBC 프로파일로 등록된 외부 데이터베이스에 연결하여 저장 프로시저를 호출합니다. SQL 문장에 콜론(:)으로 시작하는 이름을 사용하여 입력 매개변수와 출력 매개변수를 정의할 수 있습니다.

입력 매개변수:name 형식으로 지정하며, set 명령어로 설정한 쿼리 매개변수 값이 대입됩니다. 문자열 값은 자동으로 따옴표로 감싸지고, 숫자 값은 그대로 삽입됩니다.

출력 매개변수:name(type) 형식으로 지정합니다. 지원하는 타입은 다음과 같습니다:

  • varchar: 문자열
  • int: 정수
  • datetime: 날짜/시간

저장 프로시저의 반환 형태에 따라 출력이 달라집니다:

  • 결과 집합 없이 출력 매개변수만 반환하는 경우, 출력 매개변수로 구성된 1건의 레코드를 출력합니다.
  • 결과 집합과 출력 매개변수를 모두 반환하는 경우, 결과 집합의 모든 레코드에 출력 매개변수 필드를 추가하여 출력합니다.
  • 다수의 결과 집합을 반환하는 경우, 모든 결과 집합을 순차적으로 출력합니다.

사용 예

  1. 저장 프로시저 호출

    dbcall mydb {call sp_get_users()}
    

    mydb JDBC 프로파일을 사용하여 sp_get_users 저장 프로시저를 호출하고 결과 집합을 출력합니다.

  2. 입력 매개변수를 사용한 저장 프로시저 호출

    set dept="sales"
    | dbcall mydb {call sp_get_employees(:dept)}
    

    쿼리 매개변수 deptsales 값을 설정한 후, sp_get_employees 저장 프로시저에 전달하여 호출합니다.

  3. 출력 매개변수를 사용한 저장 프로시저 호출

    dbcall mydb {call sp_count_orders(:total_count(int))}
    

    sp_count_orders 저장 프로시저를 호출하고, 정수 타입의 출력 매개변수 total_count를 포함하는 레코드를 출력합니다.

  4. 입력 매개변수와 출력 매개변수를 함께 사용

    set category="electronics"
    | dbcall mydb {call sp_category_summary(:category, :item_count(int), :total_amount(varchar))}
    

    입력 매개변수 category에 값을 전달하고, 출력 매개변수 item_counttotal_amount를 포함하는 레코드를 출력합니다.

호환성

dbcall 명령어는 소나 4.0 이전 버전부터 제공되었습니다.