次のコードは、SOAPデータベース経由でOracleデータベースに接続し、XML Blobを作成して画面に戻します。入力/文書のURLの誤りが正しくありません
私は次のエラーを受け取りましたが、その理由を理解できません。
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は']論理ハッシュ値であることが証明されています。この形式を使用する他のすべてのSOAP呼び出しは、期待通りに機能します。 Bexcore.checksessionidもこのエラーの原因ではなく、bexcore.createXmlDataとして有効であることが証明されています(それぞれ同じように何千ものケースで使用され、期待どおりに動作します)。