pgx/connection_select_value.go

71 lines
1.4 KiB
Go

package pgx
import (
"errors"
"strconv"
)
func (c *Connection) SelectString(sql string) (s string, err error) {
onDataRow := func(r *MessageReader, _ []FieldDescription) error {
var null bool
s, null = c.rxDataRowFirstValue(r)
if null {
return errors.New("Unexpected NULL")
}
return nil
}
err = c.SelectFunc(sql, onDataRow)
return
}
func (c *Connection) selectInt(sql string, size int) (i int64, err error) {
var s string
s, err = c.SelectString(sql)
if err != nil {
return
}
i, err = strconv.ParseInt(s, 10, size)
return
}
func (c *Connection) SelectInt64(sql string) (i int64, err error) {
return c.selectInt(sql, 64)
}
func (c *Connection) SelectInt32(sql string) (i int32, err error) {
var i64 int64
i64, err = c.selectInt(sql, 32)
i = int32(i64)
return
}
func (c *Connection) SelectInt16(sql string) (i int16, err error) {
var i64 int64
i64, err = c.selectInt(sql, 16)
i = int16(i64)
return
}
func (c *Connection) selectFloat(sql string, size int) (f float64, err error) {
var s string
s, err = c.SelectString(sql)
if err != nil {
return
}
f, err = strconv.ParseFloat(s, size)
return
}
func (c *Connection) SelectFloat64(sql string) (f float64, err error) {
return c.selectFloat(sql, 64)
}
func (c *Connection) SelectFloat32(sql string) (f float32, err error) {
var f64 float64
f64, err = c.selectFloat(sql, 32)
f = float32(f64)
return
}