Add returning support on SQL Server

This commit is contained in:
Bugadinho
2025-09-25 09:24:16 -03:00
parent 7853a4a665
commit 0542598588
3 changed files with 27 additions and 0 deletions
+9
View File
@@ -223,6 +223,15 @@ func (db *DeleteBuilder) BuildWithFlavor(flavor Flavor, initialArg ...interface{
db.injection.WriteTo(buf, deleteMarkerAfterDeleteFrom)
if flavor == SQLServer {
if len(db.returning) > 0 {
buf.WriteLeadingString("OUTPUT ")
buf.WriteStringsPrefixed("DELETED.", db.returning, ", ")
}
db.injection.WriteTo(buf, insertMarkerAfterReturning)
}
if db.WhereClause != nil {
db.whereClauseProxy.WhereClause = db.WhereClause
defer func() {
+9
View File
@@ -200,6 +200,15 @@ func (ib *InsertBuilder) BuildWithFlavor(flavor Flavor, initialArg ...interface{
ib.injection.WriteTo(buf, insertMarkerAfterCols)
}
if flavor == SQLServer {
if len(ib.returning) > 0 {
buf.WriteLeadingString("OUTPUT ")
buf.WriteStringsPrefixed("INSERTED.", ib.returning, ", ")
}
ib.injection.WriteTo(buf, insertMarkerAfterReturning)
}
if ib.sbHolder != "" {
buf.WriteString(" ")
buf.WriteString(ib.sbHolder)
+9
View File
@@ -301,6 +301,15 @@ func (ub *UpdateBuilder) BuildWithFlavor(flavor Flavor, initialArg ...interface{
ub.injection.WriteTo(buf, updateMarkerAfterSet)
if flavor == SQLServer {
if len(ub.returning) > 0 {
buf.WriteLeadingString("OUTPUT ")
buf.WriteStringsPrefixed("INSERTED.", ub.returning, ", ")
}
ub.injection.WriteTo(buf, insertMarkerAfterReturning)
}
if flavor != MySQL {
// For ISO SQL, CTE table names should be written after FROM keyword.
if ub.cteBuilder != nil {