【问题标题】:Oracle err=918, unixUDBC, instantclinetOracle 错误=918,unixODBC,即时客户端
【发布时间】:2021-04-15 20:58:00
【问题描述】:

在程序中使用 SQLExecDirect 执行查询

SELECT 
  q.record_id as record_id, 
  s.scenariusz as scenariusz, 
  u.usluga as usluga, 
  u.priorytet as priorytet, 
  q.vip as vip, 
  q.date_added as date_added, 
  q.chat_server_session_id as chat_server_session_id 
FROM 
  queue_webchat_messenger q 
  JOIN usluga u on u.id_uslugi = q.id_uslugi 
  JOIN scenariusz s on s.id_scen = u.id_scen 
WHERE 
  q.id_agent_soft is NULL
  AND q.state = 'KO' 
ORDER by 
  u.priorytet desc, 
  q.id_uslugi, 
  q.vip desc, 
  q.date_added, 
  q.record_id;

在数据库日志 (Oracle) 中出现错误 err = 918

=====================
PARSE ERROR #139794508205160:len=450 dep=0 uid=178 oct=3 lid=178 tim=16259156390104 err=918
SELECT ROWID,q.record_id as record_id, s.scenariusz as scenariusz, u.usluga as usluga, u.priorytet as priorytet, q.vip as vip, q.date_added as date_added, q.chat_server_session_id as chat_server_session_id FROM queue_webchat_messenger q JOIN usluga u on u.id_uslugi=q.id_uslugi JOIN scenariusz s on s.id_scen=u.id_scen WHERE q.id_agent_soft is null AND q.state=:"SYS_B_0" ORDER by u.priorytet desc, q.id_uslugi, q.vip desc, q.date_added, q.record_id
CLOSE #139794508205160:c=0,e=2,dep=0,type=0,tim=16259156390850
=====================

在数据库日志中,ROWID 列被添加到查询中,我怀疑该列导致错误。 什么可能导致添加 ROWID 列,什么可能导致 err = 918?

【问题讨论】:

  • 您在 ODBC 应用程序中要求使用哪种游标?大多数可滚动游标的实现都需要一个键,这通常意味着驱动程序会在查询中添加一个rowid 列。
  • 我设置了静态光标SQLSetStmtAttr(*hstmt_p, SQL_ATTR_CURSOR_TYPE, (SQLPOINTER) SQL_CURSOR_STATIC, 0)

标签: database oracle unixodbc rowid ora-00918


【解决方案1】:

请尝试添加一个假的ROWID列:

SELECT 
  q.record_id as ROWID,
  q.record_id as record_id, 
  s.scenariusz as scenariusz, 
  u.usluga as usluga, 
  u.priorytet as priorytet, 
  q.vip as vip, 
  q.date_added as date_added, 
  q.chat_server_session_id as chat_server_session_id 
FROM 
  queue_webchat_messenger q 
  JOIN usluga u on u.id_uslugi = q.id_uslugi 
  JOIN scenariusz s on s.id_scen = u.id_scen 
WHERE 
  q.id_agent_soft is NULL
  AND q.state = 'KO' 
ORDER by 
  u.priorytet desc, 
  q.id_uslugi, 
  q.vip desc, 
  q.date_added, 
  q.record_id;

【讨论】:

  • 我得到这样的SQL Error [923] [42000]: ORA-00923: FROM keyword not found where expected
  • 跟踪您的会话以获取您的客户发送的确切内容
猜你喜欢
  • 2013-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-01
  • 1970-01-01
  • 2012-01-16
  • 1970-01-01
  • 2012-08-23
相关资源
最近更新 更多