首页 > 其他 > 详细

必须声明表变量 "@P0"

时间:2017-11-24 10:26:13      阅读:291      评论:0      收藏:0      [点我收藏+]

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&lt;=#{limit}+#{offset} AND RN&gt;#{offset}
        </if>
    </select>

修改后正常。

必须声明表变量 "@P0"

原文:http://www.cnblogs.com/legendjslc/p/7889204.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!