Как создать очередь данных в AS400, которая запускается триггером SQL? - PullRequest
1 голос
/ 12 декабря 2011

Мне нужно создать очередь данных, которая запускается моим SQL Trigger; Триггер SQL уже выполнен, но я не знаю, как реализовать очередь данных

1 Ответ

5 голосов
/ 12 декабря 2011

Как правило, SQL предназначен для работы с базами данных. Взаимодействие с объектами операционной системы не так просто сделать. Однако DB2 for i позволит вам запускать программы, в том числе API, для отправки сообщения в очередь данных: QSNDDTAQ. Это безобразно.

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

Параметры:

  1. Имя очереди данных (10 байт)
  2. Имя библиотеки очереди данных (10 байт)
  3. Длина сообщения (упаковано (5,0))
  4. Содержание сообщения

Если в триггере SQL используются переменные, а не литералы, ему не нужно делать ничего особенного для форматирования длины - показанный литерал - это то, как упакованный (5,0) выглядит внутренне.

Если бы мне было поручено это задание, я бы создал программу CL и вызывал ее, а не API. Тогда я смогу использовать упакованный (15,5) для параметра длины, который является «естественной» длиной межязыкового числа, а также предусмотреть ошибки перехвата.

...