mirror of https://github.com/jackc/pgx.git
71 lines
1.4 KiB
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
|
|
}
|