我需要做一个数据队列,由我的SQL触发器触发;SQL触发器已经完成,但我不知道如何实现数据队列
一般来说,SQL是用来操作数据库的。与操作系统对象进行交互并不容易。但是,DB2 for i允许执行程序,包括将消息发送到数据队列的API: QSNDDTAQ。它是丑陋的。
call qsnddtaq ('DTAQ ', 'LIBRARY ', x'0008F', 'From SQL')
参数为:
- 数据队列名称(10字节)
- 数据队列库名称(10字节)
- 消息长度(打包(5,0))
- 消息内容
如果SQL触发器使用变量而不是字面量,则不需要做任何特殊的操作来格式化长度-所显示的字面量是内部打包(5,0)的样子。
如果我被分配这个任务,我会创建一个CL程序并调用它,而不是API。然后,我将能够使用packed(15,5)作为长度参数,这是"自然的"跨语言数字长度,并提供捕获错误。