2011-12-12 2 views
0

광산 SQL 트리거에 의해 트리거되는 데이터 대기열을 만들어야합니다. SQL 트리거가 이미 완료되었지만 데이터 큐를 구현하는 방법을 모르겠다.SQL 트리거에 의해 트리거되는 AS400에서 데이터 대기열을 만드는 방법은 무엇입니까?

+0

많은 RPG/IBM i 질문이있는 것 같습니다. [midrange.com] (http://midrange.com) 메일 링리스트를 확인하십시오. [RPG-L] (http://murl.me/rpgl) 및 [MIDRANGE-L] (http://murl.me/midrangel). 귀하의 질문에 더 잘 답변 할 수있는 전문가가 많이 있습니다. –

+0

감사합니다. 나는 질문을 게시했지만 사용하기가 매우 어려웠다. –

답변

4

일반적으로 SQL은 데이터베이스를 처리하기위한 것입니다. 운영 체제 개체와 상호 작용하는 것은 쉽지 않습니다. 그러나 DB2 for i에서는 메시지를 데이터 대기열에 보내는 API (QSNDDTAQ)를 비롯하여 프로그램을 실행할 수 있습니다. 그것은 추합니다.

call qsnddtaq ('DTAQ  ', 'LIBRARY ', x'0008F', 'From SQL') 

매개 변수 :

  1. 데이터 큐 명 (10 바이트)
  2. 데이터 큐 라이브러리 명 (10 바이트)
  3. ((5,0) 포장)
  4. 메시지 길이
  5. 메시지 내용

SQL 트리거가 리터럴은 길이를 형식화하기 위해 특별한 작업을 수행 할 필요가 없습니다. 표시된 리터럴은 팩 (5,0)이 내부적으로 보이는 것입니다.

이 태스크를 할당받은 경우 CL 프로그램을 작성하고 API가 아닌이를 호출합니다. 그럼 나는 '자연'크로스 언어 번호 길이뿐만 아니라 트래핑 오류를 제공하는 길이 매개 변수에 대한 포장 (15,5)를 사용할 수있을 것입니다.

+0

+1 - 동의했다; SQL이 아닌 객체와 대화를하고 싶다면 CL 또는 RPGLE 프로그램으로 감싸고 대신 트리거를 호출하십시오. (또는, 단지 테이블을 만들어 대기열에 넣고 반복적 인 모니터 작업을 ...) –

+0

고마워요.하지만 그것에 대해 많이 알지 못합니다. 저에게 CL 프로그램 역시 적합 할 것입니다. 나는 그것을 할 수있는 한 as400에 의해 실행되기 위해 파일을 어디에 둘 것인지조차 모르기 때문에) 생각한다. 그러나이 경우 데이터를 변경하려면 (변경 사항이 무엇인지 알기 때문에) 데이터를 변경하려면 어떻게해야합니까? 테이블 : LIBRARY.TABLE, 필드 : [a1, a2, a3], sql 쿼리 : "SELECT a1, a2, a3 from LIBRARY.TABLE WHERE what what ??" –

+0

비즈니스 문제를 이해할 수 없습니다. A1이 변경되면 A1의 내용을 데이터 대기열로 보내려는 것입니다. A2가 변경되면 A2의 내용을 데이터 대기열로 보내려고합니다. 변경된 각 필드에 대해 별도의 메시지를 원한다고 생각하십니까? 일반적으로 데이터 큐는 프로세스간에 통신하는 데 사용됩니다. 다른 프로세스는 데이터 대기열 메시지에서 무엇을보고 싶습니까? –

관련 문제