You must create an XA data source type, before you create 3an XA data source.
3To 3create an XA data source type, use the CREATE XADATASOURCE TYPE statement, 3as follows:
3CREATE XADATASOURCE TYPE datasourcetypename (purpose options);3
For example, in your code, you could specify information as shown 3in the following example: 3
3create 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
3CREATE 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.
3You must provide one value for each of the options listed above, 3but not necessarily in the sequence shown above.
3ANSI database and non-ANSI database namespace rules apply for 3the XA data source type, XA data source names, and user-defined 3function names.
3After you create a data source type, information on the data 3source type is stored in the sysxasourcetypes system 3catalog table.
3For syntax details, see the IBM Informix: Guide to SQL Syntax.
Home | [ Top of Page | Previous Page | Next Page | Contents | Index ]