Kbase P118559: How to call an internal procedure defined in an external procedure using Open Client Java OpenAPI
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  07/09/2006 |
|
Status: Unverified
GOAL:
How to call an internal procedure defined in an external procedure using Open Client Java OpenAPI
GOAL:
How to run an an internal procedure on an OpenProcObject
FACT(s) (Environment):
OpenEdge 10.1x
FIX:
The steps to call an internal procedure from a procedure is the following:
1- Connect to the AppServer and create the OpenAppObject object
For example:
Connection myConn = new Connection("","","");
OpenAppObject ao = new OpenAppObject(myConn,"asbroker1");
2- Run the procedure persistently which instantiates an OpenProcObject by using the CreatePO method on the OpenAppObject
public OpenProcObject createPO (String procName, ParamArray paramArray)
throws Open4GLException, RunTime4GLException, SystemErrorException
For example, in the code below, the procedure to be run persistenly does not have any parameters.
// No parameter required for persistent procedure
ParamArray paramPProc = new ParamArray(0);
// Create Persistent Object
OpenProcObject po = ao.createPO("myProcedure.p",paramPProc );
3- Define the parameters required for calling the internal procedure
// Temp Table schema (3 fields)
// The 2nd field is a Character field with 2 extents
ProResultSetMetaDataImpl proMetaData = new ProResultSetMetaDataImpl(3) ;
proMetaData.setFieldMetaData(1,"CustNum",0,Parameter.PRO_INTEGER);
proMetaData.setFieldMetaData(2,"FirstName",2,Parameter.PRO_CHARACTER);
proMetaData.setFieldMetaData(3,"LastName",0,Parameter.PRO_CHARACTER);
// Internal procedure has one Temp-Table as OUTPUT parameter
ParamArray paramIProc = new ParamArray(1);
paramIProc.addTable(1,null,ParamArrayMode.OUTPUT,proMetaData);
4- Call the internal procedure
// Call internal procedure
po.runProc("getTempTable",paramIProc );