dbcall
JDBC를 통해 외부 데이터베이스의 저장 프로시저를 호출합니다. SQL 문장에 콜론(:)으로 시작하는 입력 매개변수와 출력 매개변수를 정의할 수 있습니다.
명령어 속성
| 항목 | 설명 |
|---|---|
| 명령어 유형 | 드라이버 쿼리 |
| 필요 권한 | 없음 |
| 라이선스 사용량 | 집계함 |
| 병렬 실행 | 미지원 |
| 분산 실행 | 미지원 |
문법
대상
PROFILE- JDBC 프로파일 이름. 쿼리 매개변수로 지정할 수 있습니다. JDBC 프로파일은 사전에 등록되어 있어야 합니다.
SQL- 저장 프로시저 호출 SQL 문장. 입력 매개변수와 출력 매개변수를 포함할 수 있습니다.
- 입력 매개변수:
:name형식으로 지정합니다.set명령어로 정의한 쿼리 매개변수 값이 대입됩니다. - 출력 매개변수:
:name(type)형식으로 지정합니다.type은varchar,int,datetime중 하나를 사용합니다.
출력 필드
저장 프로시저의 반환 형태에 따라 출력 필드가 결정됩니다.
- 출력 매개변수를 정의한 경우, 출력 매개변수 이름이 필드 이름이 됩니다.
- 결과 집합을 반환하는 경우, 결과 집합의 컬럼 이름이 필드 이름이 됩니다.
- 결과 집합과 출력 매개변수를 모두 반환하는 경우, 결과 집합의 컬럼과 출력 매개변수가 합쳐진 필드가 출력됩니다.
출력 필드의 이름과 타입은 저장 프로시저 정의에 따라 동적으로 결정됩니다.
오류 코드
파싱 오류
| 오류 코드 | 메시지 | 설명 |
|---|---|---|
| 12000 | 유효하지 않은 JDBC 프로파일 이름: [이름] | 지정한 JDBC 프로파일이 존재하지 않는 경우 |
| 12001 | JDBC 프로파일 사용 권한이 없습니다. | 현재 사용자에게 해당 JDBC 프로파일 권한이 없는 경우 |
| 12002 | 쿼리 매개변수가 정의되지 않았습니다. | 입력 매개변수에 대응하는 쿼리 매개변수가 없는 경우 |
런타임 오류
해당 사항 없음
설명
dbcall 명령어는 JDBC 프로파일로 등록된 외부 데이터베이스에 연결하여 저장 프로시저를 호출합니다. SQL 문장에 콜론(:)으로 시작하는 이름을 사용하여 입력 매개변수와 출력 매개변수를 정의할 수 있습니다.
입력 매개변수는 :name 형식으로 지정하며, set 명령어로 설정한 쿼리 매개변수 값이 대입됩니다. 문자열 값은 자동으로 따옴표로 감싸지고, 숫자 값은 그대로 삽입됩니다.
출력 매개변수는 :name(type) 형식으로 지정합니다. 지원하는 타입은 다음과 같습니다:
varchar: 문자열int: 정수datetime: 날짜/시간
저장 프로시저의 반환 형태에 따라 출력이 달라집니다:
- 결과 집합 없이 출력 매개변수만 반환하는 경우, 출력 매개변수로 구성된 1건의 레코드를 출력합니다.
- 결과 집합과 출력 매개변수를 모두 반환하는 경우, 결과 집합의 모든 레코드에 출력 매개변수 필드를 추가하여 출력합니다.
- 다수의 결과 집합을 반환하는 경우, 모든 결과 집합을 순차적으로 출력합니다.
사용 예
-
저장 프로시저 호출
dbcall mydb {call sp_get_users()}mydbJDBC 프로파일을 사용하여sp_get_users저장 프로시저를 호출하고 결과 집합을 출력합니다. -
입력 매개변수를 사용한 저장 프로시저 호출
set dept="sales" | dbcall mydb {call sp_get_employees(:dept)}쿼리 매개변수
dept에sales값을 설정한 후,sp_get_employees저장 프로시저에 전달하여 호출합니다. -
출력 매개변수를 사용한 저장 프로시저 호출
dbcall mydb {call sp_count_orders(:total_count(int))}sp_count_orders저장 프로시저를 호출하고, 정수 타입의 출력 매개변수total_count를 포함하는 레코드를 출력합니다. -
입력 매개변수와 출력 매개변수를 함께 사용
set category="electronics" | dbcall mydb {call sp_category_summary(:category, :item_count(int), :total_amount(varchar))}입력 매개변수
category에 값을 전달하고, 출력 매개변수item_count와total_amount를 포함하는 레코드를 출력합니다.
호환성
dbcall 명령어는 소나 4.0 이전 버전부터 제공되었습니다.