2011-08-03 6 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 
     " 
    } 
} 

저장 프로 시저를 호출 할 때 다음 함수를 사용하고 있습니다.

또한
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; 

이, 유의하시기 바랍니다 :

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

} 

내가 부르고 저장 프로 시저입니다 $ _SESSION [ 'sessionhash'] 논리 해시 값으로 입증된다. 이 형식을 사용하는 다른 모든 비누 호출은 예상대로 작동합니다. Bexcore.checksessionid는 bexcore.createXmlData와 마찬가지로이 오류의 원인이 아닌 유효한 것으로 입증되었습니다 (이들은 각각 동일한 방식으로 수천 개의 다른 경우에 사용되어 예상대로 실행됩니다).

답변

0

문제 I 데이터베이스에 액세스하는 사용자에게 요청 된 패키지를 호출 할 수 있도록 허용 권한이 설정되어 있지 않았습니다.

사용하는 것은

grant all on <packagename> to <user>;

이 문제를 해결합니다.