fix support to oracle insert multiple records

This commit is contained in:
Lunny Xiao 2017-03-01 17:31:31 +08:00
parent e0276e0f48
commit fc8109e109
No known key found for this signature in database
GPG Key ID: C3B7C91B632F738A
1 changed files with 6 additions and 1 deletions

View File

@ -210,7 +210,12 @@ func (session *Session) innerInsertMulti(rowsSlicePtr interface{}) (int64, error
} }
cleanupProcessorsClosures(&session.beforeClosures) cleanupProcessorsClosures(&session.beforeClosures)
statement := fmt.Sprintf("INSERT INTO %s (%v%v%v) VALUES (%v)", var sql = "INSERT INTO %s (%v%v%v) VALUES (%v)"
if session.Engine.dialect.DBType() == core.ORACLE {
sql = "INSERT ALL INTO %s (%v%v%v) VALUES (%v) SELECT 1 FROM DUAL"
}
statement := fmt.Sprintf(sql,
session.Engine.Quote(session.Statement.TableName()), session.Engine.Quote(session.Statement.TableName()),
session.Engine.QuoteStr(), session.Engine.QuoteStr(),
strings.Join(colNames, session.Engine.QuoteStr()+", "+session.Engine.QuoteStr()), strings.Join(colNames, session.Engine.QuoteStr()+", "+session.Engine.QuoteStr()),