输入/文档URL错误不正确

时间:2011-08-03 18:11:54

标签: oracle stored-procedures plsql

我有以下代码通过soap连接到oracle数据库,创建XML Blob并将其返回到屏幕。

我收到以下错误,无法弄清楚原因。

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(它们在数千个其他情况下以相同的方式使用并按预期运行。)

1 个答案:

答案 0 :(得分:0)

我遇到的问题是,访问数据库的用户没有设置允许调用请求的包的权限。

使用

grant all on <packagename> to <user>;

解决这个问题。