@@ -360,10 +360,11 @@ func buildBulkMergePLSQL(db *gorm.DB, createValues clause.Values, onConflictClau
360360 plsqlBuilder .WriteString ("DECLARE\n " )
361361 writeTableRecordCollectionDecl (db , & plsqlBuilder , stmt .Schema .DBNames , stmt .Table )
362362 plsqlBuilder .WriteString (" l_affected_records t_records;\n " )
363+ dialector := stmt .DB .Dialector .(* Dialector ) // Get dialector for version check
363364
364365 // Create array types and variables for each column
365366 for i , column := range createValues .Columns {
366- arrayType := getOracleArrayType (bindMap .variableMap [column .Name ])
367+ arrayType := getOracleArrayType (bindMap .variableMap [column .Name ], dialector . Config . ServerVersion )
367368 plsqlBuilder .WriteString (fmt .Sprintf (" TYPE t_col_%d_array IS %s;\n " , i , arrayType ))
368369 plsqlBuilder .WriteString (fmt .Sprintf (" l_col_%d_array t_col_%d_array;\n " , i , i ))
369370 }
@@ -598,7 +599,7 @@ func buildBulkMergePLSQL(db *gorm.DB, createValues clause.Values, onConflictClau
598599 plsqlBuilder .WriteString (" RETURNING CLOB); END IF;\n " )
599600 }
600601 } else {
601- fieldType := createTypedDestination (field )
602+ fieldType := createTypedDestination (field , dialector . Config . ServerVersion )
602603 if bindMap .lobColumns [column ] {
603604 switch fieldType .(type ) {
604605 case * []uint8 :
@@ -646,10 +647,11 @@ func buildBulkInsertOnlyPLSQL(db *gorm.DB, createValues clause.Values, bindMap p
646647 plsqlBuilder .WriteString ("DECLARE\n " )
647648 writeTableRecordCollectionDecl (db , & plsqlBuilder , stmt .Schema .DBNames , stmt .Table )
648649 plsqlBuilder .WriteString (" l_inserted_records t_records;\n " )
650+ dialector := stmt .DB .Dialector .(* Dialector ) // Get dialector for version check
649651
650652 // Create array types and variables for each column
651653 for i , column := range createValues .Columns {
652- arrayType := getOracleArrayType (bindMap .variableMap [column .Name ])
654+ arrayType := getOracleArrayType (bindMap .variableMap [column .Name ], dialector . Config . ServerVersion )
653655 plsqlBuilder .WriteString (fmt .Sprintf (" TYPE t_col_%d_array IS %s;\n " , i , arrayType ))
654656 plsqlBuilder .WriteString (fmt .Sprintf (" l_col_%d_array t_col_%d_array;\n " , i , i ))
655657 }
@@ -729,7 +731,7 @@ func buildBulkInsertOnlyPLSQL(db *gorm.DB, createValues clause.Values, bindMap p
729731 ))
730732 }
731733 } else {
732- fieldType := createTypedDestination (field )
734+ fieldType := createTypedDestination (field , dialector . Config . ServerVersion )
733735 if bindMap .lobColumns [column ] {
734736 switch fieldType .(type ) {
735737 case * []uint8 :
0 commit comments