gorm操作sqlserver2008报错:“mssql: 在 FETCH 语句中选项 NEXT 的用法无效。“

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值