From fc8109e109ea4f9d3dad95c4675ab86a0e231ae8 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Wed, 1 Mar 2017 17:31:31 +0800 Subject: [PATCH] fix support to oracle insert multiple records --- session_insert.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/session_insert.go b/session_insert.go index 96e969c2..2d076fae 100644 --- a/session_insert.go +++ b/session_insert.go @@ -210,7 +210,12 @@ func (session *Session) innerInsertMulti(rowsSlicePtr interface{}) (int64, error } 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.QuoteStr(), strings.Join(colNames, session.Engine.QuoteStr()+", "+session.Engine.QuoteStr()),