PASSTHRU 함수는 표현식을 평가하고 결과 문자열을 데이터베이스 명령문으로 실행하여 결과 세트를 리턴합니다.
PASSTHRU 함수는 PASSTHRU문에서 설명한 PASSTHRU 문과 유사합니다.
SYNTAXPASSTHRU 함수의 기본 사용은 현재 브로커에서 지원하지 않는 복합 SELECT를 데이터베이스로 발행하는 것입니다. (현재 브로커에서 지원하지 않는 복합 SELECT의 예는 GROUP BY 또는 HAVING절을 포함하는 것입니다.)
첫 번째 표현식이 평가되고 결과 문자열은 예외에 대해 DatabaseReference(TO 절)에서 지정한 데이터베이스로 전달됩니다. TO 절을 지정하지 않은 경우 노드의 데이터 소스 속성에 의해 지정된 데이터베이스가 사용됩니다.
데이터베이스 문자열에서 물음표(?)를 사용하여 매개변수를 표시하십시오. 매개변수 값이 VALUES 절에 의해 제공됩니다.
VALUES 절이 지정된 경우 표현식이 평가되어 데이터베이스에 매개변수로 전달됩니다(즉, 값이 데이터베이스 명령문의 물음표로 대체됨).
VALUE 표현식이 한 개만 있는 경우 결과는 목록일 수도 있고 목록이 아닐 수도 있습니다. 결과가 목록인 경우에는 목록의 스칼라 값이 물음표로 대체됩니다. 목록이 아닌 경우에는 단일 스칼라 값이 데이터베이스 명령문의 물음표(?)로 대체됩니다. VALUE 표현식이 두 개 이상 있는 경우 표현식이 목록으로 평가될 수 없습니다. 스칼라 값은 물음표(?)로 대체됩니다.
데이터베이스 명령문이 사용자 프로그램으로 구성되기 때문에 매개변수 마커(즉, 물음표)를 사용할 필요가 없거나 데이터베이스 명령문 전체가 제공될 수 있으므로 프로그램에서 VALUES 절을 리터럴 문자열로 사용할 필요가 없습니다. 그러나 가능한 경우마다 매개변수 마커를 사용하십시오. 데이터베이스 및 브로커에서 준비하고 저장해야 하는 명령문의 수가 줄어들기 때문입니다.
데이터베이스 참조는 메시지 트리를 참조하는 데 사용된 필드 참조의 특수한 경우입니다. 이는 "Database"라는 단어 뒤에 데이터 소스 이름(즉, 데이터베이스 인스턴스 이름)으로 구성됩니다.
데이터 소스 이름을 직접 지정하거나 괄호({...})로 묶인 표현식으로 지정할 수 있습니다. 직접 지정된 데이터 소스 이름은 이름이 대체될 수 있습니다. 즉, 사용된 이름이 알려진 이름으로 선언된 경우 이름 자체보다 선언된 이름의 값이 사용됩니다(DECLARE문 참조).
PASSTHRU 조작 중 오류가 발생할 수 있습니다. 예를 들면, 데이터베이스가 작동하지 않거나 명령문이 올바르지 않습니다. 이러한 경우 예외가 발생합니다(노드에서 throw exception on database error 등록 정보를 FALSE로 설정한 경우 제외). 이 예외는 적절한 SQL 코드, 상태, 고유 오류 및 오류 텍스트 값을 설정하고 오류 핸들러로 처리할 수 있습니다(DECLARE HANDLER 문 참조).
데이터베이스 오류 처리에 대한 자세한 정보는 데이터베이스 상태 캡처를 참조하십시오.
SET OutputRoot.XML.Data.SelectResult.Row[] = PASSTHRU('SELECT R.* FROM Schema1.Table1 AS R WHERE R.Name = ? OR R.Name = ? ORDER BY Name' TO Database.DSN1 VALUES ('Name1', 'Name4'));