Example: Using a UDF to Write a Message to an External Queue - Teradata Vantage

Teradata® VantageCloud Lake

Deployment
VantageCloud
Edition
Lake
Product
Teradata Vantage
Published
January 2023
ft:locale
en-US
ft:lastEdition
2024-12-11
dita:mapPath
phg1621910019905.ditamap
dita:ditavalPath
pny1626732985837.ditaval
dita:id
phg1621910019905

This example creates a C scalar UDF named write_mq that writes a message to an external queue. The function calls an MQ access module, identical to the access module a TPump job or other utility uses when processing from a queue.

The select list of the following SELECT statement has only the scalar UDF and the expected arguments. The statement returns the message 'Hello World' to an MQ queue on the client:

    SELECT WriteMQ('queue.manager.1','QUEUE1','CHANNEL1/TCP/           153.64.119.177', 'Hello World');

The parameters passed are the queue manager (qmgr ), queue name (qnm ), client communication channel (channel), and the message itself (vcmsg), respectively.

The following is the DDL used to create the function.

    CREATE FUNCTION write_mq(
      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';