WebSphere MQ Client UDF
WebSphere MQ Client UDF
About this download
SQL Scalar UDF that writes varbyte or varchar arg to MQ.
README
Purpose: SQL Scalar UDF that writes varbyte or varchar arg to MQ Author: Robert Hahn Robert.Hahn@teradata.com Support: Author will answer questions and consider enhancment requests on a time available basis. email: Robert.Hahn@ncr.com with any questions, suggestions, or feedback. Contents: Parms: qmgr, qnm, channel, varchar message. Comments--To Do: Add varbyte overload. Accept identity args and open w/MQOO_ALTERNATE_USER_AUTHORITY for varchar, set md.Encoding and md.CodedCharSetId so that mq will convert e.g. to ebcdic Use snprintf, strncpy (had some problem with snprintf). Documentation: MQConnect/MQOpen then MQPUT the varchar argument. This can be used for single puts or parallel controlled by a where clause. This should be run in protected mode since it causes mallocs. Note: Update defaults for qmgr, qnm, envmq etc. Requirements: For MPRAS, this requires that the IBM MQ Client for MPRAS is installed on all nodes: Obtain from here: http: www-1.ibm.com/support/docview.wss?uid=swg24000067 Similar for windows--available as part of any Websphere MQ Server distribution Build: Scalar UDF: replace function emruwmq( qmgr varchar(256), qnm varchar(256), channel varchar(256), vcmsg varchar(32000)) returns integer language C NO SQL parameter style sql EXTERNAL NAME 'F:emruwmq:SI:cmqc:/usr/include/cmqc.h:SL:mqic:SL:mqmcs:SS:emruwmq:/home/rmh/projects/emruwmq/emruwmq.c'; select emruwmq('queue.manager.1','QUEUE1','CHANNEL1/TCP/153.64.119.177','themessage') [from allamp where ampid <= 8 ] /* parallel--assumes allamp table with 1 row/amp */ Invoking from an insert statement trigger on table cxpmult w/varchar col2: replace TRIGGER writeMq after Insert on cxpmult REFERENCING NEW table AS n FOR EACH statement (INSERT INTO dummy sel emruwmq('queue.manager.1','QUEUE1','CHANNEL1/TCP/153.64.119.177',n.col2) as c1 from n where c1 < 0;);