Я создал запрос с добавлением нескольких операторов условий. Все они работают нормально, но когда я печатаю, чтобы иметь параметр ограничения, я получаю только ошибки.
Итак, я использую go 1.10 с Gorm и фреймворком Gin. Это мой текущий рабочий код,
qb := myDB.Table("table").Select("xx, xxx, xxx, xxx")
rows, err := qb.Rows()
if err != nil {
fmt.Println(err)
}
defer myDB.Close()
return rows
Все это работает, но когда я добавляю ограничение где угодно, например до стола или после, я пробовал оба, но действительно не думал, что это имеет значение? Например,
qb := myDB.Table("table").Limit(3).Select("xx, xxx, xxx, xxx")
Теперь я знаю, что MS SQL не использует ограничение, но использует TOP в операторе select (простите меня, если это не единственный вариант использования, MS SQL все еще не используется).
Я получаю сообщение об ошибке:
mssql: Invalid usage of the option NEXT in the FETCH statement.
Теперь я нашел следующее на GitHub Горма: https://github.com/jinzhu/gorm/issues/1205
У них есть обходной путь, но для меня это не сработает. Парень также опубликовал обновленную функцию, чтобы исправить проблему. Однако я не уверен, как мне обновить код в сторонней библиотеке. Также это было опубликовано в 2016 году, поэтому не уверен, что этот код уже был добавлен в базу кода Gorm.