Home | Previous Page | Next Page   Database Access > Working with XA-Compliant External Data Sources > Managing XA Data Sources and Data Source Types > 3 3 3

Creating an XA Data Source Type

3

You must create an XA data source type, before you create 3an XA data source.

3

To 3create an XA data source type, use the CREATE XADATASOURCE TYPE statement, 3as follows:

3
CREATE XADATASOURCE TYPE datasourcetypename (purpose options);
3

For example, in your code, you could specify information as shown 3in the following example: 3

3
create function "informix".mqseries_open(lvarchar(256), int, int) returns int;
3       external name '$USERFUNCDIR/mqseries.udr(mqseries_open)' language c;
3
3grant execute on function "informix".mqseries_open(lvarchar(256), int, int) 
3       to public;
3
3create function "informix".mqseries_close(lvarchar(256), int, int) returns int;
3       external name '$USERFUNCDIR/mqseries.udr(mqseries_close)' language c;
3
3grant execute on function "informix".mqseries_close(lvarchar(256), int, int) 
3       to public;
3
3create function "informix".mqseries_start(informix.pointer, int, int) returns int;
3       external name '$USERFUNCDIR/mqseries.udr(mqseries_start)' language c;
3
3grant execute on function "informix".mqseries_start(informix.pointer, int, int) 
3       to public;
3
3create function "informix".mqseries_end(informix.pointer, int, int) returns int;
3        external name '$USERFUNCDIR/mqseries.udr(mqseries_end)' language c;
3
3grant execute on function "informix".mqseries_end(informix.pointer, int, int) 
3        to public;
3
3create function "informix".mqseries_rollback(informix.pointer, int, int) 
3        returns int;
3         external name '$USERFUNCDIR/mqseries.udr(mqseries_rollback)' language c;
3grant execute on function "informix".mqseries_rollback(informix.pointer, int, int)
3        to public;
3
3create function "informix".mqseries_prepare(informix.pointer, int, int) returns int;
3         external name '$USERFUNCDIR/mqseries.udr(mqseries_prepare)' language c;
3
3grant execute on function "informix".mqseries_prepare(informix.pointer, int, int) 
3        to public;
3
3create function "informix".mqseries_commit(informix.pointer, int, int) returns int;
3         external name '$USERFUNCDIR/mqseries.udr(mqseries_commit)' language c;
3
3grant execute on function "informix".mqseries_commit(informix.pointer, int, int) 
3        to public;
3
3create function "informix".mqseries_forget(informix.pointer, int, int) returns int;
3         external name '$USERFUNCDIR/mqseries.udr(mqseries_forget)' language c;
3
3grant execute on function "informix".mqseries_forget(informix.pointer, int, int) 
3        to public;
3
3create function "informix".mqseries_recover(informix.pointer, int, int, int) 
3        returns int;
3         external name '$USERFUNCDIR/mqseries.udr(mqseries_recover)' language c;
3
3grant execute on function "informix".mqseries_recover(informix.pointer, int, int,
3        int) to public;
3
3create function "informix".mqseries_complete(informix.pointer, informix.pointer,
3        int, int) returns int;
3         external name '$USERFUNCDIR/mqseries.udr(mqseries_complete)' language c;
3
3grant execute on function "informix".mqseries_complete(informix.pointer,
3        informix.pointer int, int) to public;
3

3

3
CREATE XADATASOURCE TYPE informix.MQSeries
3(xa_flags = 1,
3xa_version   = 0,
3xa_open     = informix.mqseries_open,
3xa_close    = informix.mqseries_close,
3xa_start    = informix.mqseries_start,
3xa_end      = informix.mqseries_end,
3xa_rollback = informix.mqseries_rollback,
3xa_prepare  = informix.mqseries_prepare,
3xa_commit   = informix.mqseries_commit,
3xa_recover  = informix.mqseries_recover,
3xa_forget   = informix.mqseries_forget,
3xa_complete = informix.mqseries_complete);
3

In this statement, xa_flags must be set 3to 1.

3

You must provide one value for each of the options listed above, 3but not necessarily in the sequence shown above.

3

ANSI database and non-ANSI database namespace rules apply for 3the XA data source type, XA data source names, and user-defined 3function names.

3

After you create a data source type, information on the data 3source type is stored in the sysxasourcetypes system 3catalog table.

3

For syntax details, see the IBM Informix: Guide to SQL Syntax.

Home | [ Top of Page | Previous Page | Next Page | Contents | Index ]