2011-08-03 21 views
0

次のコードは、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として有効であることが証明されています(それぞれ同じように何千ものケースで使用され、期待どおりに動作します)。

答えて

0

問題Iデータベースにアクセスしているユーザーに、要求されたパッケージの呼び出しを許可するアクセス権が設定されていないことが原因でした。この問題を解決するための

使用

grant all on <packagename> to <user>;

関連する問題