Skip to content

Commit fe767ac

Browse files
committed
Add returning support on SQL Server
1 parent 009947e commit fe767ac

File tree

3 files changed

+27
-0
lines changed

3 files changed

+27
-0
lines changed

delete.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,15 @@ func (db *DeleteBuilder) BuildWithFlavor(flavor Flavor, initialArg ...interface{
223223

224224
db.injection.WriteTo(buf, deleteMarkerAfterDeleteFrom)
225225

226+
if flavor == SQLServer {
227+
if len(db.returning) > 0 {
228+
buf.WriteLeadingString("OUTPUT ")
229+
buf.WriteStringsPrefixed("DELETED.", db.returning, ", ")
230+
}
231+
232+
db.injection.WriteTo(buf, insertMarkerAfterReturning)
233+
}
234+
226235
if db.WhereClause != nil {
227236
db.whereClauseProxy.WhereClause = db.WhereClause
228237
defer func() {

insert.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,15 @@ func (ib *InsertBuilder) BuildWithFlavor(flavor Flavor, initialArg ...interface{
200200
ib.injection.WriteTo(buf, insertMarkerAfterCols)
201201
}
202202

203+
if flavor == SQLServer {
204+
if len(ib.returning) > 0 {
205+
buf.WriteLeadingString("OUTPUT ")
206+
buf.WriteStringsPrefixed("INSERTED.", ib.returning, ", ")
207+
}
208+
209+
ib.injection.WriteTo(buf, insertMarkerAfterReturning)
210+
}
211+
203212
if ib.sbHolder != "" {
204213
buf.WriteString(" ")
205214
buf.WriteString(ib.sbHolder)

update.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -301,6 +301,15 @@ func (ub *UpdateBuilder) BuildWithFlavor(flavor Flavor, initialArg ...interface{
301301

302302
ub.injection.WriteTo(buf, updateMarkerAfterSet)
303303

304+
if flavor == SQLServer {
305+
if len(ub.returning) > 0 {
306+
buf.WriteLeadingString("OUTPUT ")
307+
buf.WriteStringsPrefixed("INSERTED.", ub.returning, ", ")
308+
}
309+
310+
ub.injection.WriteTo(buf, insertMarkerAfterReturning)
311+
}
312+
304313
if flavor != MySQL {
305314
// For ISO SQL, CTE table names should be written after FROM keyword.
306315
if ub.cteBuilder != nil {

0 commit comments

Comments
 (0)