读取Sybase ResultSet列报JZ006: JZ0R3: Column is DEAD错误如何解决
问题触发原因汇总
- 结果集读取顺序不匹配:Sybase jConnect驱动对结果集列的读取有严格的顺序要求,必须和存储过程返回的列的先后顺序一致,跳列读取会触发该内部错误。如果
created列在实际返回结果集中的排序早于id列,先读id再读created就会触发报错。 - 列类型读取方法不兼容:
created列属于Sybase特有的时间类型(如DATETIME、BIGDATETIME等),直接调用getObject()读取时驱动没有对应的默认映射规则,导致内部流读取失败。可尝试替换为getTimestamp("created")等对应类型的读取方法验证。 - jConnect驱动版本存在已知BUG:你使用的jConnect 4.x版本存在多个结果集读取相关的已知缺陷,处理日期、长文本等类型时极易触发JZ0R3错误,可尝试升级到jConnect 7.x及以上的稳定版本复现验证。
- 存储过程返回的列未正常赋值:如果存储过程中
created列是动态生成的,特定执行分支下未给该列赋值,驱动读取时会识别为无效状态,抛出dead column错误。可直接在Sybase数据库客户端执行相同入参的存储过程,确认created列是否返回正常有效值。 - 结果集关联资源提前释放:读取结果集前如果提前关闭了关联的
Statement、数据库连接,或者中间执行了其他数据库操作导致当前结果集游标失效,读取未缓存的列时也会触发该错误。
内容的提问来源于stack exchange,提问作者Harold L. Brown
相关产品推荐
相关产品推荐

