必須聲明表變量 "@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>

修改后正常。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM