call path/dfx( … )

Read(257) Label: jdbc, search for a program file,

Description:

Search for a program file locally via esProc JDBC and execute it. If the file can’t be found, then search the server.

Syntax:

call path/dfx(…)

Note:

The function calls a cellset file dfx to execute it while passing in parameters …. It first searches the local cellset files with absolute or relative search paths for the desired one. If the file can’t be found locally, then search the server (configure the server list in the raqsoftConfig.xml file). Once the computation is completed, the function returns a sequence composed of members of the result set; if there are multiple result sets, then return a sequence composed of these result sets. This is similar to calling a stored procedure in the normal database driver. During execution, use con.prepareCall() to call a statement in which the parameters can be written directly or set with st.setObject(). Once the statement is generated, use st.execute() to execute it and return the result set.

When calling the function, the parameters arg1,... will be assigned to dfx’s parameters, which is irrelevant to the parameter names in dfx’s parameter list.

Parameters:

path

The relative search path or absolute search path of a file. The default setting is the relative search path when this parameter isn’t specified.

dfx

Cellset file.

Parameter. Use comma to separate the multiple parameters. The parameter names are irrelevant to the acceptance of the values, which, instead, will be assigned to the parameters in order.

Example:

Below are the contents of the cellset file test.dfx, in which StuId and Class are the cellset parameters.

 

A

1

=connect("demo")

2

=A1.query("select * from SCORES where STUDENTID=? and CLASS=?",StuId,Class)

3

=A2.sum(SCORE)

4

>A1.close()

5

return A3

 

 

 

 

 

 

 

 

Test code is as follows:

public void testDataServer() {

    Connection con = null;

    java.sql.PreparedStatement st;

    try{

      Class.forName("com.esproc.jdbc.InternalDriver");

      con= DriverManager.getConnection("jdbc:esproc:local://");

      // Call the stored procedure in which test is the name of the dfx file

      st =con.prepareCall("call test(?,?)");

      // Set the first parameter

      st.setObject(1,"4");

// Set the second parameter

      st.setObject(2,"Class one");

      // Execute stored procedure

      st.execute();

      // Get result set

      ResultSet set = st.getResultSet();

      // Print results

      printRs(set); 

      // The following statement gets same result as the above-mentioned calling method has

      st =con.prepareCall("call test(4,\"Class one\")");

      st.execute();

      set = st.getResultSet();

      printRs(set);

    }

    catch(Exception e){

      System.out.println(e);

    }

    finally{

      // Close the connection

      if (con!=null) {

        try {

          con.close();

        }

        catch(Exception e) {

          System.out.println(e);

        }

      }

    }

  }