• 必须声明表变量 "@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&lt;=#{limit}+#{offset} AND RN&gt;#{offset}
            </if>
        </select>

    修改后正常。

  • 相关阅读:
    python 全局变量与局部变量
    Python 百分号字符串拼接
    Python集合的基本操作
    sorted by value in dict python
    gVim vundle
    vim config
    vim move the cursor in a long sentence
    步步为营-37-自动生成数据库连接字符串
    步步为营-36-ADO.Net简介
    步步为营-35-SQL语言基础
  • 原文地址:https://www.cnblogs.com/legendjslc/p/7889204.html
Copyright © 2020-2023  润新知