【问题标题】:SOAP API / SQL Error "ORA 00904 invalid Identifier"SOAP API/SQL 错误“ORA 00904 无效标识符”
【发布时间】:2018-01-18 10:51:44
【问题描述】:

我有以下问题:

我需要获取 oracle db 表的几列以在 .php 页面上显示信息。为此,我使用了一个 SOAP-API,它可以完美地与任何其他表一起工作,但不能与这个表一起工作。

这是我用于所有这些查询的代码:

$setSearchObjectsIn = new SearchObjectsInType();

    $setSearchObjectsIn->sessionId = (String) $sessionId;   
    $setSearchObjectsIn->table = (String) 'STFCFG_DD_VALUE';    
    $setSearchObjectsIn->caseSensitive = (String) 'false';  
    $setSearchObjectsIn->limitedResult = (String) 'false';  
    $setSearchObjectsIn->restrictions[0]['attributeName']= (String) 'STFCFG_DD_VALUE.DDID';
    $setSearchObjectsIn->restrictions[0]['restriction']['operator'] = (String) '=';
    $setSearchObjectsIn->restrictions[0]['restriction']['value'] = (String) $ddid;

    $setSearchObjectsIn->resultColumns[0] = (String) 'STFCFG_DD_VALUE.DD_VALUE';
    $setSearchObjectsIn->resultColumns[1] = (String) 'STFCFG_DD_VALUE.CATALOG_NAME';
    $setSearchObjectsIn->resultColumns[2] = (String) 'STFCFG_DD_VALUE.MSG_ID';      

    $client = new SoapClient((String) $instance.'/axis/services/GenericApiWS?wsdl');    
    $result = $client->searchObjects($setSearchObjectsIn);

这是我使用这张特殊表时遇到的错误:

ORA-00904: "MAN_ID": ungültiger Bezeichner

我还尝试使用 SoapUI 启动此查询,结果完全相同。 事实上,我的代码中没有像“MAN_ID”这样的东西让我想知道,因为错误看起来我会查询一个这样命名的列,我显然不会这样做。 (请求的表中也没有“MAN_ID”列,所以我不知道这是从哪里来的)

希望你能帮到我

【问题讨论】:

  • 也许你有一个与该字段一起使用的触发器
  • ... 或其他一些存储的 procedurefunction
  • 谢谢。我使用 SQLDeveloper 在此表中搜索了不同的设置,但似乎完全没有区别。没有触发器或类似的东西。

标签: php sql oracle soap


【解决方案1】:

我会尝试在 SOAP server 代码中查找 MAN_ID - 错误可能是服务器返回的内容,它可能正在隐式查找该列。错误消息肯定是由 Oracle 生成的,因此请搜索您的查询到达那里的方式,如果可能,查看执行了什么查询。

【讨论】:

  • 谢谢,我检查了错误日志并询问了一位同事。由于日志消息,他告诉我 API 本身会搜索 MAN_ID 列以进行身份​​验证。将应用修补程序以跳过没有此列的表上的该步骤。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-18
  • 2016-10-15
  • 1970-01-01
  • 1970-01-01
  • 2012-07-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多