Exemple #1
0
void
gcd_api_cancel( GCD_PCB *pcb )
{
    pcb->api.name = "IIapi_cancel()";
    pcb->api.parm.cancel.cn_genParm.gp_callback = gcd_cncl_cmpl;
    pcb->api.parm.cancel.cn_genParm.gp_closure = (PTR)pcb;
    pcb->api.parm.cancel.cn_stmtHandle = pcb->ccb->api.stmt;

    if ( pcb->api.parm.cancel.cn_stmtHandle )
	IIapi_cancel( &pcb->api.parm.cancel );
    else
    {
	/*
	** There was no statement to cancel.
	** No error is returned in this case.
	*/
	pcb->api_status = IIAPI_ST_SUCCESS;
	pcb->api_error = OK;
	gcd_pop_callback( pcb );
    }

    return;
}
Exemple #2
0
int
main( int argc, char** argv ) 
{
    II_PTR		connHandle = (II_PTR)NULL;
    II_PTR		tranHandle = (II_PTR)NULL;
    II_PTR		stmtHandle = (II_PTR)NULL;
    IIAPI_QUERYPARM	queryParm;
    IIAPI_GETDESCRPARM	getDescrParm;
    IIAPI_GETCOLPARM	getColParm;
    IIAPI_CLOSEPARM	closeParm;
    IIAPI_CANCELPARM	cancelParm;
    IIAPI_WAITPARM	waitParm = { -1 };
    IIAPI_DATAVALUE	DataBuffer[ 1 ];
    int			i;
    char		var1[33];

    if ( argc != 2 )
    {
	printf( "usage: apissell [vnode::]dbname[/server_class]\n" );
	exit( 0 );
    }

    IIdemo_init(); 
    IIdemo_conn(argv[1],&connHandle);

    /*
    **  Issue query
    */
    printf( "apissell: select table names\n" );

    queryParm.qy_genParm.gp_callback = NULL;
    queryParm.qy_genParm.gp_closure = NULL;
    queryParm.qy_connHandle = connHandle;
    queryParm.qy_queryType = IIAPI_QT_QUERY;
    queryParm.qy_queryText = queryText;
    queryParm.qy_parameters = FALSE;
    queryParm.qy_tranHandle = tranHandle;
    queryParm.qy_stmtHandle = NULL;

    IIapi_query( &queryParm );
  
    while( queryParm.qy_genParm.gp_completed == FALSE )
	IIapi_wait( &waitParm );

    tranHandle = queryParm.qy_tranHandle;
    stmtHandle = queryParm.qy_stmtHandle;

    /*
    **  Get query result descriptors
    */
    printf( "apissell: get descriptors\n" );

    getDescrParm.gd_genParm.gp_callback = NULL;
    getDescrParm.gd_genParm.gp_closure = NULL;
    getDescrParm.gd_stmtHandle = stmtHandle;
    getDescrParm.gd_descriptorCount = 0;
    getDescrParm.gd_descriptor = NULL;

    IIapi_getDescriptor( &getDescrParm );
    
    while( getDescrParm.gd_genParm.gp_completed == FALSE )
	IIapi_wait( &waitParm );

    /*
    **  Get query results
    */
    printf( "apissell: get results\n" );

    getColParm.gc_genParm.gp_callback = NULL;
    getColParm.gc_genParm.gp_closure = NULL;
    getColParm.gc_rowCount = 1;
    getColParm.gc_columnCount = 1;
    getColParm.gc_rowsReturned = 0;
    getColParm.gc_columnData =  DataBuffer;
    getColParm.gc_columnData[0].dv_value = var1; 
    getColParm.gc_stmtHandle = stmtHandle;
    getColParm.gc_moreSegments = 0;

    for( i = 0; i < 5; i++ )
    {
	IIapi_getColumns( &getColParm );
        
        while( getColParm.gc_genParm.gp_completed == FALSE )
	    IIapi_wait( &waitParm );

	if ( getColParm.gc_genParm.gp_status >= IIAPI_ST_NO_DATA )
	    break; 

	var1[ DataBuffer[0].dv_length ] = '\0';
	printf( "\t%s = %s  \n", 
	    getDescrParm.gd_descriptor[0].ds_columnName, var1 );

    };

    /*
    **  Cancel query processing.
    */
    printf( "apissell: cancel query\n" );

    cancelParm.cn_genParm.gp_callback = NULL;
    cancelParm.cn_genParm.gp_closure = NULL;
    cancelParm.cn_stmtHandle = stmtHandle;

    IIapi_cancel(&cancelParm );

    while( cancelParm.cn_genParm.gp_completed == FALSE )
	IIapi_wait( &waitParm);

    /*
    **  Free query resources.
    */
    printf( "apissell: free query resources\n" );

    closeParm.cl_genParm.gp_callback = NULL;
    closeParm.cl_genParm.gp_closure = NULL;
    closeParm.cl_stmtHandle = stmtHandle;

    IIapi_close( &closeParm );

    while( closeParm.cl_genParm.gp_completed == FALSE )
	IIapi_wait( &waitParm );

    IIdemo_rollback(&tranHandle); 
    IIdemo_disconn(&connHandle);
    IIdemo_term();

    return( 0 );
}