327.4. 저장 프로시저 템플릿 선언

템플릿은 Java 메서드 서명과 유사한 구문을 사용하여 선언됩니다. 저장 프로시저의 이름 및 인수 괄호로 묶습니다.The name of the stored procedure, and then the arguments enclosed in parenthesis. 예를 들어, 이 예제를 잘 설명합니다.

<to uri="sql-stored:STOREDSAMPLE(INTEGER ${headers.num1},INTEGER ${headers.num2},INOUT INTEGER ${headers.num3} result1,OUT INTEGER result2)"/>

인수는 유형에서 선언한 다음 simple 표현식을 사용하여 Camel 메시지에 매핑합니다. 이 예제에서 처음 두 매개 변수는 메시지 헤더에 매핑된 INTEGER 유형의 IN 값입니다. 세 번째 매개 변수는 INOUT입니다. 즉, INTEGER를 수락한 다음 다른 INTEGER 결과를 반환합니다. 마지막 매개 변수는 OUT 값인 INTEGER 유형이기도 합니다.

SQL 용어에서 저장 프로시저는 다음과 같이 선언될 수 있습니다.In SQL term the stored procedure could be declared as:

CREATE PROCEDURE STOREDSAMPLE(VALUE1 INTEGER, VALUE2 INTEGER, INOUT RESULT1 INTEGER, OUT RESULT2 INTEGER)

327.4.1. IN 매개변수

IN 매개 변수는 공백으로 구분되는 네 가지 부분, 매개 변수 이름, SQL 유형(scale 포함), 유형 이름 및 값 소스를 사용합니다.

매개변수 이름은 선택 사항이며 제공되지 않는 경우 자동으로 생성됩니다. 따옴표(') 간에 지정해야 합니다.

SQL 형식은 필수이며 정수(예: 또는 음수)이거나 일부 클래스의 정수 필드에 대한 참조일 수 있습니다. SQL 유형에 점이 포함된 경우 구성 요소는 해당 클래스를 확인하고 지정된 필드를 읽습니다. 예를 들어 SQL 유형 com.Foo.INTEGER 필드는 com.Foo 클래스의 INTEGER 필드에서 읽습니다. 형식이 쉼표를 포함하지 않으면 정수 값을 확인하기 위해 클래스는 java.sql.Types 가 됩니다. 확장에 따라 type을 postfixed할 수 있습니다(예: DECIMAL(10)은 scale 10이 있는 java.sql.Types.DECIMAL 을 의미합니다.

유형 이름은 선택 사항이며 따옴표 간에 지정해야 합니다.

값 소스가 필요합니다. 값 소스는 Exchange에서 매개 변수 값을 채웁니다. 단순 식 또는 헤더 위치 i.e. :#<header name>일 수 있습니다. 예를 들어 Simple expression ${header.val} 은 매개변수 값이 헤더 "val"에서 읽을 수 있음을 의미합니다. 헤더 위치 표현식 :#val에는 동일한 효과가 있습니다.

<to uri="sql-stored:MYFUNC('param1' org.example.Types.INTEGER(10) ${header.srcValue})"/>

URI는 매개 변수 이름 "param1"을 사용하여 저장 프로시저가 호출되며 SQL 유형은 org.example.Types 필드 INTEGER에서 읽어지며 scale은 10으로 설정됩니다. 매개변수의 입력 값은 헤더 "srcValue"에서 전달됩니다.

<to uri="sql-stored:MYFUNC('param1' 100 'mytypename' ${header.srcValue})"/>

URI는 SQL 유형 100을 제외한 이전 버전과 동일하며 유형 이름은 "mytypename"입니다.

실제 호출은 org.springframework.jdbc.core.SqlParameter를 사용하여 수행됩니다.