Consultor Eletrônico



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 );