gorm操作sqlserver2008报错:“mssql: 在 FETCH 语句中选项 NEXT 的用法无效。”
版本问题
代码如下
r := gin.Default()
r.GET("/api/xqh", func(c *gin.Context) {
// 获取请求参数
deviceID := c.Query("deviceID")
// 根据ID,查询
db := database.SqlserverDb
var xqhs []dbstatus.XqhStatus
tx := db.Limit(24).Where("devID = ?", deviceID).Order("keyid desc").Find(&xqhs)
if tx.Error != nil {
c.JSON(400, tx.Error.Error())
} else {
//输出json结果给调用方
c.JSON(200, xqhs)
}
})
limit放在前面报错:"mssql: 在 FETCH 语句中选项 NEXT 的用法无效。
放在最后根本没作用
sqlserver 中没有limit 语法,要使用top
SELECT TOP 20 * FROM t_xqhStatus WHERE devID = '38042537' order by keyid desc
上述代码应改为
r := gin.Default()
r.GET("/api/xqh", func(c *gin.Context) {
// 获取请求参数
deviceID := c.Query("deviceID")
// 根据ID,查询
db := database.SqlserverDb
var xqhs []dbstatus.XqhStatus
//tx := db.Limit(24).Where("devID = ?", deviceID).Order("keyid desc").Find(&xqhs)
tx := db.Raw("SELECT TOP 24 * FROM t_xqhStatus WHERE devID = ? order by keyid desc", deviceID).Scan(&xqhs)
if tx.Error != nil {
c.JSON(400, tx.Error.Error())
} else {
//输出json结果给调用方
c.JSON(200, xqhs)
}
})
r.Run("0.0.0.0:83") // listen and serve on 0.0.0.0:8080