SRV_CURDESC structure

A SRV_CURDESC structure contains information about a cursor, including:

A SRV_CURDESC structure is defined as follows:

/*
 ** SRV_CURDESC
 ** The Open Server cursor description
 ** structure.
 */
 
 typedef struct srv_curdesc
 {
     CS_INT       curid;
     CS_INT       numupcols;
     CS_INT       fetchcnt;
     CS_INT       curstatus;
     CS_INT       curcmd;
     CS_INT       cmdoptions;
     CS_INT       fetchtype;
     CS_INT       rowoffset;
     CS_INT       curnamelen;
     CS_CHAR      curname[CS_MAX_CHAR];
     CS_INT       tabnamelen;
     CS_CHAR      tabname[CS_MAX_CHAR];
     CS_VOID      *userdata;
 
 } SRV_CURDESC;

Table 2-12 describes each field in a SRV_CURDESC structure:

Table 2-12: Fields in a SRV_CURDESC structure

Field name

Description

Notes

curid

The current cursor identifier

The Open Server application must set curid when responding to a CS_CURSOR_DECLARE command from the client. Any subsequent commands from the client that pertain to the declared cursor use curid as an identifier. curid is set to 0 if there is no current cursor identifier or if the client is requesting the status of all available cursors.

numupcols

The number of columns in a cursor update clause

numupcols is set to 0 if there are no update columns. This information is available when the cursor is declared.

fetchcnt

The current row fetch count for this cursor— that is, the number of rows that will be sent to the client in response to a CS_CURSOR_FETCH command

fetchcnt is set when a CS_CURSOR_INFO command is received from the client or is sent to the client in response to such a command. fetchcnt is set to 1 if the client has not explicitly set a row fetch count. If the Open Server application cannot support the requested fetch count, it can set this field to a different value before responding.

curstatus

The status of the current cursor

Open Server sets the cursor status in response to the cursor command received from the client. See “Values for curstatus” for a list of legal values.

curcmd

The current cursor command type

See Table 2-14 for a list of legal values.

cmdoptions

Any options associated with the cursor command

Not all commands have associated options. The value of cmdoptions depends on the cursor command. Table 2-14 describes the possible values for cmdoptions, by command.

fetchtype

The type of fetch requested by a client

fetchtype is described when a CS_CURSOR_FETCH command is received from the client. The valid fetch types and their meanings are as follows:

  • CS_NEXT – next row

  • CS_PREV – previous row

  • CS_FIRST – first row

  • CS_LAST – last row

  • CS_ABSOLUTE – row identified in the rowoffset field

  • CS_RELATIVE – current row plus or minus value in the rowoffset field.

Requests to an Adaptive Server will always have a fetchtype of CS_NEXT.

rowoffset

The row position for CS_ABSOLUTE or CS_RELATIVE fetches

rowoffset is undefined for all other fetch types. rowoffset is set when a CS_CURSOR_FETCH command is received from the client.

curnamelen

The length of the cursor name in curname

curnamelen is zero if curname is not valid. curnamelen returns the length of the cursor name.

curname

The name of the current cursor

tabnamelen

The length of the table name in tabname

tabnamelen is zero if tabname is not valid. tabnamelen returns the length of the table name. tabnamelen is described when a CS_CURSOR_UPDATE or CS_CURSOR_DELETE command is received from the client.

tabname

The table name associated with a cursor update or delete command

tabname is the table name associated with a cursor update or delete command. tabname is described when a CS_CURSOR_UPDATE or CS_CURSOR_DELETE command is received from the client.

userdata

A pointer to private data space

This field allows applications to associate data with a particular cursor without using global or static variables. Open Server does not manipulate userdata; it is provided only for the convenience of Open Server application programmers.