必须声明表变量 "@P0"
Posted 轻云悠然舞月光
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了必须声明表变量 "@P0"相关的知识,希望对你有一定的参考价值。
mybatis提示错误
### Cause: com.microsoft.sqlserver.jdbc.SQLServerException: 必须声明表变量 "@P0"。 ; uncategorized SQLException for SQL []; SQL state [S0001]; error code [1087]; 必须声明表变量 "@P0"。; nested exception is com.microsoft.sqlserver.jdbc.SQLServerException: 必须声明表变量 "@P0"。 at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:84) at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81) at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81) at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:75) at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:447)
原因是SQL语句中表名作为一个变量,必须写成${tableName}, 而不是写成#{tableName}作为一个参数。
<select id="queryList" resultType="Map" databaseId="sqlserver"> SELECT * FROM ( SELECT D.*, ROW_NUMBER () OVER (ORDER BY TmStamp DESC) RN FROM ${tableName} D ) T <if test="limit!=null and offset!=null"> WHERE RN<=#{limit}+#{offset} AND RN>#{offset} </if> </select>
修改后正常。
以上是关于必须声明表变量 "@P0"的主要内容,如果未能解决你的问题,请参考以下文章