ORA-31417: column list contains control column string

文档解释

ORA-31417: column list contains control column string

Cause: Reserved column name was specified in a column list or column type parameter.

Action: Control columns are selected with separate parameters. If you did not want a control column, then change the name of the specified column so that it does not conflict with a reserved column name.

ORA-31417:列列表包含控制列字符串

官方解释

ORA-31417: 列列表包含控制列字符串

这是一个错误消息,对ORA-31417进行解释: 列列表包含控制列字符串。

这个错误消息提示用户,输入参数列表不能包含控制列字符串,当且仅当sql语句包含特殊操作,比如drop、alter、update、insert等。

常见案例

如下sql语句中的$col参数传入的内容包含了drop操作:

sql> select * from tablename where $col=’value’;

一般处理方法及步骤

1)仔细检查sql语句中的参数值,确认没有提交涉及drop、alter、update、insert等操作

2)如果将来自外界的参数作为sql语句的一部分,一定要使用parameterized sql,而不是把参数拼接到sql字符串中

3)参数的值需要进行合法性校验,使用正则表达式可以很容易的就可以过滤特殊字符及这些包含控制列字符串的参数

你可能感兴趣的