Cursor in stored procedure
Posted: Wed 03 Apr 2013 09:27
After migration from version 6.xx to 8.6.12 I have problem with one stored procedure. There is cursor type parameter in this procedure.
PROCEDURE cdbGetCustomerSet (
my_cur IN OUT genericcurtyp,
my_result_code OUT NUMBER,
my_result_msg OUT VARCHAR2,
my_substr_on IN NUMBER,
my_custid IN NUMBER,
my_firstname IN VARCHAR2,
my_lastname IN VARCHAR2,
my_birthday IN DATE,
my_firmname IN VARCHAR2,
my_firmico IN VARCHAR2,
my_firmdic IN VARCHAR2,
my_street IN VARCHAR2,
my_city IN VARCHAR2,
my_pan IN VARCHAR2
)
GetCrsrSetCDB->StoredProcName = "DMSCDB.CDBGETCUSTOMERSET";
GetCrsrSetCDB->Params->CreateParam(ftCursor, "MY_CUR", ptInputOutput);
GetCrsrSetCDB->Params->CreateParam(ftInteger, "MY_RESULT_CODE", ptOutput);
GetCrsrSetCDB->Params->CreateParam(ftString, "MY_RESULT_MSG", ptOutput);
GetCrsrSetCDB->Params->CreateParam(ftInteger, "MY_SUBSTR_ON", ptInput);
GetCrsrSetCDB->Params->CreateParam(ftInteger, "MY_CUSTID", ptInput);
GetCrsrSetCDB->Params->CreateParam(ftString, "MY_FIRSTNAME", ptInput);
GetCrsrSetCDB->Params->CreateParam(ftString, "MY_LASTNAME", ptInput);
GetCrsrSetCDB->Params->CreateParam(ftDate, "MY_BIRTHDAY", ptInput);
GetCrsrSetCDB->Params->CreateParam(ftString, "MY_FIRMNAME", ptInput);
GetCrsrSetCDB->Params->CreateParam(ftString, "MY_FIRMICO", ptInput);
GetCrsrSetCDB->Params->CreateParam(ftString, "MY_FIRMDIC", ptInput);
GetCrsrSetCDB->Params->CreateParam(ftString, "MY_STREET", ptInput);
GetCrsrSetCDB->Params->CreateParam(ftString, "MY_CITY", ptInput);
GetCrsrSetCDB->Params->CreateParam(ftString, "MY_PAN", ptInput);
GetCrsrSetCDB->Params->ParamByName("MY_FIRMNAME")->Value = ...
GetCrsrSetCDB->Active = true;
in 6. version this works fine but in 8.6.12 DBMonitors shows that all input parameters are NULL and procedure dosn't work.
I tried
GetCrsrSetCDB->Execute();
Input parameteres are OK this tim, but I get ODAC exception "SQL statement dosn't return rows".
PROCEDURE cdbGetCustomerSet (
my_cur IN OUT genericcurtyp,
my_result_code OUT NUMBER,
my_result_msg OUT VARCHAR2,
my_substr_on IN NUMBER,
my_custid IN NUMBER,
my_firstname IN VARCHAR2,
my_lastname IN VARCHAR2,
my_birthday IN DATE,
my_firmname IN VARCHAR2,
my_firmico IN VARCHAR2,
my_firmdic IN VARCHAR2,
my_street IN VARCHAR2,
my_city IN VARCHAR2,
my_pan IN VARCHAR2
)
GetCrsrSetCDB->StoredProcName = "DMSCDB.CDBGETCUSTOMERSET";
GetCrsrSetCDB->Params->CreateParam(ftCursor, "MY_CUR", ptInputOutput);
GetCrsrSetCDB->Params->CreateParam(ftInteger, "MY_RESULT_CODE", ptOutput);
GetCrsrSetCDB->Params->CreateParam(ftString, "MY_RESULT_MSG", ptOutput);
GetCrsrSetCDB->Params->CreateParam(ftInteger, "MY_SUBSTR_ON", ptInput);
GetCrsrSetCDB->Params->CreateParam(ftInteger, "MY_CUSTID", ptInput);
GetCrsrSetCDB->Params->CreateParam(ftString, "MY_FIRSTNAME", ptInput);
GetCrsrSetCDB->Params->CreateParam(ftString, "MY_LASTNAME", ptInput);
GetCrsrSetCDB->Params->CreateParam(ftDate, "MY_BIRTHDAY", ptInput);
GetCrsrSetCDB->Params->CreateParam(ftString, "MY_FIRMNAME", ptInput);
GetCrsrSetCDB->Params->CreateParam(ftString, "MY_FIRMICO", ptInput);
GetCrsrSetCDB->Params->CreateParam(ftString, "MY_FIRMDIC", ptInput);
GetCrsrSetCDB->Params->CreateParam(ftString, "MY_STREET", ptInput);
GetCrsrSetCDB->Params->CreateParam(ftString, "MY_CITY", ptInput);
GetCrsrSetCDB->Params->CreateParam(ftString, "MY_PAN", ptInput);
GetCrsrSetCDB->Params->ParamByName("MY_FIRMNAME")->Value = ...
GetCrsrSetCDB->Active = true;
in 6. version this works fine but in 8.6.12 DBMonitors shows that all input parameters are NULL and procedure dosn't work.
I tried
GetCrsrSetCDB->Execute();
Input parameteres are OK this tim, but I get ODAC exception "SQL statement dosn't return rows".