Example: Executing a Java Table UDF with Java Result Set Construction

Java Table UDF code example. This example creates a result set.

  1. Java code for Java creation of a return_rset method, for numeric values:
    public static void rowgenerator( int a, int b,  ResultSet rset[] ) {
    	int result = a + b;
    	// Create the meta data needed for the result set
    	ResultSetMetaDataImpl rsmd = new ResultSetMetaDataImpl(1);
    	rsmd.setColumnType(1, Types.INTEGER);
    	rsmd.setColumnName(1,"sum");
    	rsmd.setColumnLabel(1,"sum");
    	rsmd.setTableName(1,"my_sum");
    
    	// Create result set
    	ResultSetImpl rs = null;
    	try {
    		rs = new ResultSetImpl( (ResultSetMetaData)rsmd );
    		rs.beforeFirst();
    	} catch( Exception e ) {
    		System.out.println( "Error: couldn't create result set." );
    		System.out.println( e.toString() );
    	}
    
    	// Add the rows to the result set and populate them
    	try {
    		rs.insertRow();
    		rs.updateInt( 1, result );
    	} catch( Exception e ) {
    		System.out.println( "Error: couldn't insert row/data on row 1" );
    		System.out.println( e.toString() );
    	}
    	try {
    		rs.beforeFirst();
    	} catch( Exception e ) {
    		System.out.println( e.toString() );
    	}
    	rset[0] = rs;
    }
  2. Java code for java creation of a return_rset method, for non-numerical values:
    public static void char_result_udf( java.lang.String s, ResultSet rset[]) {
    	// Create the meta data needed for the result set
    	ResultSetMetaDataImpl rsmd = new ResultSetMetaDataImpl(1);
    	rsmd.setColumnType(1, Types.CHAR);
    	if(s.length()==0){
    		rsmd.setColumnDisplaySize(1, 1);
    	} else { 
    		rsmd.setColumnDisplaySize(1,s.length() );
    	}
    	rsmd.setColumnName(1,"c1");
    	rsmd.setColumnLabel(1,"c1");
    	rsmd.setTableName(1,"my_string");
    
    	// Create result set
    	ResultSetImpl rs = null;
    	try {
    		rs = new ResultSetImpl( (ResultSetMetaData)rsmd );
    		rs.beforeFirst();
    		//Insert some values into the result set
    		rs.insertRow();
    		rs.updateString(1, c);
    	} catch( Exception e ) {
    		System.out.println( "Error: couldn't create result set." );
    		System.out.println( e.toString() );
    	try {
    		rs.beforeFirst();
    	} catch( Exception e ) {
    		System.out.println( "Error: couldn't insert row/data on row 1" );
    		System.out.println( e.toString() );
    	}
    	rset[0] = rs;