以下Oracle错误意味着什么:无效的列索引

jdb*_*ie. 32 java sql oracle

测试一些代码时出现以下错误:

SQLException:列索引无效

这到底是什么意思呢?

是否有在线文档解释所有Oracle错误代码和语句?

Dat*_*jam 49

如果这是Java抛出的SQLException,则很可能是因为您尝试从ResultSet获取或设置值,但您使用的索引不在该范围内.

例如,您可能尝试从结果集中获取索引3处的列,但是您只从SQL查询返回两列.


p.c*_*ell 10

听起来你正在尝试SELECT一个不存在的专栏.

也许你正在尝试ORDER BY一个不存在的专栏?

SQL语句中的任何拼写错误?


小智 7

使用Spring的SimpleJdbcTemplate,当我尝试这样做时,我得到了它:

String sqlString = "select pwy_code from approver where university_id = '123'";
List<Map<String, Object>> rows = getSimpleJdbcTemplate().queryForList(sqlString, uniId);
Run Code Online (Sandbox Code Playgroud)
  • 我有一个queryForList的参数,它与SQL中的问号不对应.第一行应该是:

    String sqlString = "select pwy_code from approver where university_id = ?";
    
    Run Code Online (Sandbox Code Playgroud)


Ara*_*NSR 7

请尝试此修复,因为我遇到了您的错误:

删除问号周围的单引号,这意味着,如果您使用保留参数(如 ('?','?','?') ),则应使其如下所示:

(?,?,?)
Run Code Online (Sandbox Code Playgroud)


Nav*_*rla 5

我也遇到了这种类型的错误,问题是错误地使用了参数语句,比方说,你说你有这样的查询

SELECT * FROM EMPLOYE E WHERE E.ID = ?
Run Code Online (Sandbox Code Playgroud)

如果设置参数,则为preparedStatement对象(JDBC)

preparedStatement.setXXX(1,value);
preparedStatement.setXXX(2,value)
Run Code Online (Sandbox Code Playgroud)

然后它导致 SQLException: Invalid column index

所以,我将第二个参数设置删除到准备好的语句然后问题解决了