mirror of
				https://codeberg.org/forgejo/forgejo.git
				synced 2025-11-04 00:11:04 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			64 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
// +build go1.9
 | 
						|
 | 
						|
package mssql
 | 
						|
 | 
						|
import (
 | 
						|
	"database/sql"
 | 
						|
	"database/sql/driver"
 | 
						|
	"fmt"
 | 
						|
	// "github.com/cockroachdb/apd"
 | 
						|
)
 | 
						|
 | 
						|
// Type alias provided for compibility.
 | 
						|
//
 | 
						|
// Deprecated: users should transition to the new names when possible.
 | 
						|
type MssqlDriver = Driver
 | 
						|
type MssqlBulk = Bulk
 | 
						|
type MssqlBulkOptions = BulkOptions
 | 
						|
type MssqlConn = Conn
 | 
						|
type MssqlResult = Result
 | 
						|
type MssqlRows = Rows
 | 
						|
type MssqlStmt = Stmt
 | 
						|
 | 
						|
var _ driver.NamedValueChecker = &Conn{}
 | 
						|
 | 
						|
func (c *Conn) CheckNamedValue(nv *driver.NamedValue) error {
 | 
						|
	switch v := nv.Value.(type) {
 | 
						|
	case sql.Out:
 | 
						|
		if c.outs == nil {
 | 
						|
			c.outs = make(map[string]interface{})
 | 
						|
		}
 | 
						|
		c.outs[nv.Name] = v.Dest
 | 
						|
 | 
						|
		// Unwrap the Out value and check the inner value.
 | 
						|
		lnv := *nv
 | 
						|
		lnv.Value = v.Dest
 | 
						|
		err := c.CheckNamedValue(&lnv)
 | 
						|
		if err != nil {
 | 
						|
			if err != driver.ErrSkip {
 | 
						|
				return err
 | 
						|
			}
 | 
						|
			lnv.Value, err = driver.DefaultParameterConverter.ConvertValue(lnv.Value)
 | 
						|
			if err != nil {
 | 
						|
				return err
 | 
						|
			}
 | 
						|
		}
 | 
						|
		nv.Value = sql.Out{Dest: lnv.Value}
 | 
						|
		return nil
 | 
						|
	// case *apd.Decimal:
 | 
						|
	// 	return nil
 | 
						|
	default:
 | 
						|
		return driver.ErrSkip
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func (s *Stmt) makeParamExtra(val driver.Value) (res Param, err error) {
 | 
						|
	switch val := val.(type) {
 | 
						|
	case sql.Out:
 | 
						|
		res, err = s.makeParam(val.Dest)
 | 
						|
		res.Flags = fByRevValue
 | 
						|
	default:
 | 
						|
		err = fmt.Errorf("mssql: unknown type for %T", val)
 | 
						|
	}
 | 
						|
	return
 | 
						|
}
 |