mirror of
https://github.com/ManyakRus/starter.git
synced 2025-11-25 23:02:22 +02:00
сделал RawMultipleSQL()
This commit is contained in:
@@ -398,32 +398,72 @@ loop:
|
||||
stopapp.GetWaitGroup_Main().Done()
|
||||
}
|
||||
|
||||
//// RawMultipleSQL - выполняет текст запроса, отдельно для каждого запроса
|
||||
//func RawMultipleSQL(db *gorm.DB, TextSQL string) *gorm.DB {
|
||||
// var tx *gorm.DB
|
||||
// var err error
|
||||
// tx = db
|
||||
//
|
||||
// // запустим все запросы отдельно
|
||||
// sqlSlice := strings.Split(TextSQL, ";")
|
||||
// len1 := len(sqlSlice)
|
||||
// for i, v := range sqlSlice {
|
||||
// if i == len1-1 {
|
||||
// tx = tx.Raw(v)
|
||||
// err = tx.Error
|
||||
// } else {
|
||||
// tx = tx.Exec(v)
|
||||
// err = tx.Error
|
||||
// }
|
||||
// if err != nil {
|
||||
// TextError := fmt.Sprint("db.Raw() error: ", err, ", TextSQL: \n", v)
|
||||
// err = errors.New(TextError)
|
||||
// break
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// if tx == nil {
|
||||
// log.Panic("db.Raw() error: rows =nil")
|
||||
// }
|
||||
//
|
||||
// return tx
|
||||
//}
|
||||
|
||||
// RawMultipleSQL - выполняет текст запроса, отдельно для каждого запроса
|
||||
func RawMultipleSQL(db *gorm.DB, TextSQL string) *gorm.DB {
|
||||
var tx *gorm.DB
|
||||
var err error
|
||||
tx = db
|
||||
|
||||
// запустим все запросы отдельно
|
||||
sqlSlice := strings.Split(TextSQL, ";")
|
||||
len1 := len(sqlSlice)
|
||||
for i, v := range sqlSlice {
|
||||
if i == len1-1 {
|
||||
tx = tx.Raw(v)
|
||||
err = tx.Error
|
||||
} else {
|
||||
tx = tx.Exec(v)
|
||||
err = tx.Error
|
||||
}
|
||||
if tx == nil {
|
||||
log.Error("RawMultipleSQL() error: db =nil")
|
||||
return tx
|
||||
}
|
||||
|
||||
TextSQL1 := ""
|
||||
TextSQL2 := TextSQL
|
||||
|
||||
//запустим все запросы, кроме последнего
|
||||
pos1 := strings.LastIndex(TextSQL, ";")
|
||||
if pos1 > 0 {
|
||||
TextSQL1 = TextSQL[0:pos1]
|
||||
TextSQL2 = TextSQL[pos1:]
|
||||
tx = tx.Exec(TextSQL1)
|
||||
err = tx.Error
|
||||
if err != nil {
|
||||
TextError := fmt.Sprint("db.Raw() error: ", err, ", TextSQL: \n", v)
|
||||
TextError := fmt.Sprint("db.Exec() error: ", err, ", TextSQL: \n", TextSQL1)
|
||||
err = errors.New(TextError)
|
||||
break
|
||||
return tx
|
||||
}
|
||||
}
|
||||
|
||||
if tx == nil {
|
||||
log.Panic("db.Raw() error: rows =nil")
|
||||
//запустим последний запрос, с возвратом результата
|
||||
tx = tx.Raw(TextSQL2)
|
||||
err = tx.Error
|
||||
if err != nil {
|
||||
TextError := fmt.Sprint("db.Raw() error: ", err, ", TextSQL: \n", TextSQL2)
|
||||
err = errors.New(TextError)
|
||||
return tx
|
||||
}
|
||||
|
||||
return tx
|
||||
|
||||
Reference in New Issue
Block a user