У меня есть следующий код, который подключается к базе данных оракула через мыло, создает блоб XML и возвращает его на экран.
Я получаю следующую ошибку и не могу понять, почему.
array(3) {
["faultcode"]=>
string(11) "soap:Client"
["faultstring"]=>
string(22) "Error processing input"
["detail"]=>
array(1) {
["OracleErrors"]=>
string(39) "
Incorrect Input Doc/URL
"
}
}
Я использую следующую функцию для вызова хранимой процедуры.
function getUsersData(){
$xmlfunc = 'GETUSERS';
$pkg = 'JSON_EXPORTS';
$inparam = array("SESSIONHASH-VARCHAR2-IN" => $_SESSION['sessionhash']);
$outparam = array("USERSDATA-XMLTYPE-OUT");
$oradb = oradb::getconnection();
$oradb->newxml($xmlfunc,$pkg,$inparam,$outparam);
$result = $oradb->getxml(false,false,false,true);
print_r($result);
}
Это хранимая процедура, которую я вызываю:
CREATE OR REPLACE PACKAGE BODY vivouser.json_exports IS
-- @Oracle bexV2
PROCEDURE getusers(sessionhash IN VARCHAR2,
usersdata OUT XMLTYPE)
IS
p_companyid number;
p_storegroupid number;
p_userid number;
BEGIN
bexcore.checksessionid(sessionhash, p_companyid, p_storegroupid, p_userid);
usersdata := bexcore.CreateXMLData(
'select userid,
tbu.companyid,
tbu.firstname,
tbu.middlename,
tbu.lastname,
tbu.gender,
tbu.payrollnumber,
tbu.ismanager,
tpt.description,
tpt.wagerate
from tbuser tbu
left join tbposition tbp using (USERID)
left join tbpositiontype tpt using (POSITIONTYPEID);'
);
END getusers;
END json_exports;
Также обратите внимание: $ _SESSION ['sessionhash'] доказано, что это значение логического хэша. Все остальные вызовы мыла, использующие эту функцию формата, как и ожидалось. Bexcore.checksessionid также доказано, что он действителен, а не является причиной этой ошибки, как bexcore.createXmlData (каждый из них используется в тысячах других случаев одинаково и работает как положено.)