goracle.v2: gopkg.in/goracle.v2 Index | Files

package goracle

import "gopkg.in/goracle.v2"

Package goracle is a database/sql/driver for Oracle DB.

The connection string for the sql.Open("goracle", connString) call can be the simple

login/password@sid [AS SYSDBA|AS SYSOPER]

type (with sid being the sexp returned by tnsping), or in the form of

ora://login:password@sid/? \
  sysdba=0& \
  sysoper=0& \
  poolMinSessions=1& \
  poolMaxSessions=1000& \
  poolIncrement=1& \
  connectionClass=POOLED& \
  standaloneConnection=0& \
  enableEvents=0& \
  heterogeneousPool=0& \
  prelim=0

These are the defaults. Many advocate that a static session pool (min=max, incr=0) is better, with 1-10 sessions per CPU thread. See http://docs.oracle.com/cd/E82638_01/JJUCP/optimizing-real-world-performance.htm#JJUCP-GUID-BC09F045-5D80-4AF5-93F5-FEF0531E0E1D You may also use ConnectionParams to configure a connection.

If you specify connectionClass, that'll reuse the same session pool without the connectionClass, but will specify it on each session acquire. Thus you can cluster the session pool with classes, or use POOLED for DRCP.

Index

Package Files

conn.go data.go drv.go drv_10.go drv_posix.go lob.go obj.go orahlp.go rows.go stmt.go stmt_go10.go subscr.go version.go

Constants

const (
    // StartupDefault is the default mode for startup which permits database access to all users.
    StartupDefault = StartupMode(C.DPI_MODE_STARTUP_DEFAULT)
    // StartupForce shuts down a running instance (using ABORT) before starting a new one. This mode should only be used in unusual circumstances.
    StartupForce = StartupMode(C.DPI_MODE_STARTUP_FORCE)
    // StartupRestrict only allows database access to users with both the CREATE SESSION and RESTRICTED SESSION privileges (normally the DBA).
    StartupRestrict = StartupMode(C.DPI_MODE_STARTUP_RESTRICT)
)
const (
    // ShutdownDefault - further connections to the database are prohibited. Wait for users to disconnect from the database.
    ShutdownDefault = ShutdownMode(C.DPI_MODE_SHUTDOWN_DEFAULT)
    // ShutdownTransactional - further connections to the database are prohibited and no new transactions are allowed to be started. Wait for active transactions to complete.
    ShutdownTransactional = ShutdownMode(C.DPI_MODE_SHUTDOWN_TRANSACTIONAL)
    // ShutdownTransactionalLocal - behaves the same way as ShutdownTransactional but only waits for local transactions to complete.
    ShutdownTransactionalLocal = ShutdownMode(C.DPI_MODE_SHUTDOWN_TRANSACTIONAL_LOCAL)
    // ShutdownImmediate - all uncommitted transactions are terminated and rolled back and all connections to the database are closed immediately.
    ShutdownImmediate = ShutdownMode(C.DPI_MODE_SHUTDOWN_IMMEDIATE)
    // ShutdownAbort - all uncommitted transactions are terminated and are not rolled back. This is the fastest way to shut down the database but the next database startup may require instance recovery.
    ShutdownAbort = ShutdownMode(C.DPI_MODE_SHUTDOWN_ABORT)
    // ShutdownFinal shuts down the database. This mode should only be used in the second call to dpiConn_shutdownDatabase().
    ShutdownFinal = ShutdownMode(C.DPI_MODE_SHUTDOWN_FINAL)
)
const (
    // DefaultFetchRowCount is the number of prefetched rows by default (if not changed through FetchRowCount statement option).
    DefaultFetchRowCount = 1 << 8

    // DefaultArraySize is the length of the maximum PL/SQL array by default (if not changed through ArraySize statement option).
    DefaultArraySize = 1 << 10
)
const (
    // DpiMajorVersion is the wanted major version of the underlying ODPI-C library.
    DpiMajorVersion = C.DPI_MAJOR_VERSION
    // DpiMinorVersion is the wanted minor version of the underlying ODPI-C library.
    DpiMinorVersion = C.DPI_MINOR_VERSION

    // DriverName is set on the connection to be seen in the DB
    DriverName = "gopkg.in/goracle.v2 : " + Version

    // DefaultPoolMinSessions specifies the default value for minSessions for pool creation.
    DefaultPoolMinSessions = 1
    // DefaultPoolMaxSessions specifies the default value for maxSessions for pool creation.
    DefaultPoolMaxSessions = 1000
    // DefaultPoolIncrement specifies the default value for increment for pool creation.
    DefaultPoolIncrement = 1
    // DefaultConnectionClass is the default connectionClass
    DefaultConnectionClass = "GORACLE"
    // NoConnectionPoolingConnectionClass is a special connection class name to indicate no connection pooling.
    // It is the same as setting standaloneConnection=1
    NoConnectionPoolingConnectionClass = "NO-CONNECTION-POOLING"
)
const (
    EvtStartup     = EventType(C.DPI_EVENT_STARTUP)
    EvtShutdown    = EventType(C.DPI_EVENT_SHUTDOWN)
    EvtShutdownAny = EventType(C.DPI_EVENT_SHUTDOWN_ANY)
    EvtDropDB      = EventType(C.DPI_EVENT_DROP_DB)
    EvtDereg       = EventType(C.DPI_EVENT_DEREG)
    EvtObjChange   = EventType(C.DPI_EVENT_OBJCHANGE)
    EvtQueryChange = EventType(C.DPI_EVENT_QUERYCHANGE)
)

Events that can be watched.

const (
    // OpAll Indicates that notifications should be sent for all operations on the table or query.
    OpAll = Operation(C.DPI_OPCODE_ALL_OPS)
    // OpAllRows Indicates that all rows have been changed in the table or query (or too many rows were changed or row information was not requested).
    OpAllRows = Operation(C.DPI_OPCODE_ALL_ROWS)
    // OpInsert Indicates that an insert operation has taken place in the table or query.
    OpInsert = Operation(C.DPI_OPCODE_INSERT)
    // OpUpdate Indicates that an update operation has taken place in the table or query.
    OpUpdate = Operation(C.DPI_OPCODE_UPDATE)
    // OpDelete Indicates that a delete operation has taken place in the table or query.
    OpDelete = Operation(C.DPI_OPCODE_DELETE)
    // OpAlter Indicates that the registered table or query has been altered.
    OpAlter = Operation(C.DPI_OPCODE_ALTER)
    // OpDrop Indicates that the registered table or query has been dropped.
    OpDrop = Operation(C.DPI_OPCODE_DROP)
    // OpUnknown An unknown operation has taken place.
    OpUnknown = Operation(C.DPI_OPCODE_UNKNOWN)
)
const Version = "v2.16.3"

Version of this driver

Variables

var (
    // Int64 for converting to-from int64.
    Int64 = intType{}
    // Float64 for converting to-from float64.
    Float64 = floatType{}
    // Num for converting to-from Number (string)
    Num = numType{}
)
var ErrNoSuchKey = errors.New("no such key")

ErrNoSuchKey is the error for missing key in lookup.

var ErrNotCollection = errors.New("not collection")

ErrNotCollection is returned when the Object is not a collection.

var ErrNotExist = errors.New("not exist")

ErrNotExist is returned when the collection's requested element does not exist.

var Log func(...interface{}) error

Log function. By default, it's nil, and thus logs nothing. If you want to change this, change it to a github.com/go-kit/kit/log.Swapper.Log or analog to be race-free.

func CallbackSubscr Uses

func CallbackSubscr(ctx unsafe.Pointer, message *C.dpiSubscrMessage)

CallbackSubscr is the callback for C code on subscription event. export CallbackSubscr

func ContextWithLog Uses

func ContextWithLog(ctx context.Context, logF func(...interface{}) error) context.Context

ContextWithLog returns a context with the given log function.

func ContextWithTraceTag Uses

func ContextWithTraceTag(ctx context.Context, tt TraceTag) context.Context

ContextWithTraceTag returns a context with the specified TraceTag, which will be set on the session used.

func ContextWithUserPassw Uses

func ContextWithUserPassw(ctx context.Context, user, password string) context.Context

ContextWithUserPassw returns a context with the specified user and password, to be used with heterogeneous pools.

func EnableDbmsOutput Uses

func EnableDbmsOutput(ctx context.Context, conn Execer) error

EnableDbmsOutput enables DBMS_OUTPUT buffering on the given connection. This is required if you want to retrieve the output with ReadDbmsOutput later.

func MapToSlice Uses

func MapToSlice(qry string, metParam func(string) interface{}) (string, []interface{})

MapToSlice modifies query for map (:paramname) to :%d placeholders + slice of params.

Calls metParam for each parameter met, and returns the slice of their results.

func NamedToOrdered Uses

func NamedToOrdered(qry string, namedParams map[string]interface{}) (string, []interface{})

NamedToOrdered converts the query from named params (:paramname) to :%d placeholders + slice of params, copying the params verbatim.

func NewConnector Uses

func NewConnector(name string, onInit func(driver.Conn) error) (driver.Connector, error)

NewConnector returns a driver.Connector to be used with sql.OpenDB, which calls the given onInit if the connection is new.

func NewSessionIniter Uses

func NewSessionIniter(m map[string]string) func(driver.Conn) error

NewSessionIniter returns a function suitable for use in NewConnector as onInit, which calls "ALTER SESSION SET <key>='<value>'" for each element of the given map.

func ReadDbmsOutput Uses

func ReadDbmsOutput(ctx context.Context, w io.Writer, conn preparer) error

ReadDbmsOutput copies the DBMS_OUTPUT buffer into the given io.Writer.

func WrapRows Uses

func WrapRows(ctx context.Context, q Querier, rset driver.Rows) (*sql.Rows, error)

WrapRows transforms a driver.Rows into an *sql.Rows.

type Column Uses

type Column struct {
    Name                      string
    ObjectType                *C.dpiObjectType
    OracleType                C.dpiOracleTypeNum
    NativeType                C.dpiNativeTypeNum
    Size, SizeInChars, DBSize C.uint32_t
    Precision                 C.int16_t
    Scale                     C.int8_t
    Nullable                  bool
}

Column holds the info from a column.

type CompileError Uses

type CompileError struct {
    Owner, Name, Type    string
    Line, Position, Code int64
    Text                 string
    Warning              bool
}

CompileError represents a compile-time error as in user_errors view.

func GetCompileErrors Uses

func GetCompileErrors(queryer queryer, all bool) ([]CompileError, error)

GetCompileErrors returns the slice of the errors in user_errors.

If all is false, only errors are returned; otherwise, warnings, too.

func (CompileError) Error Uses

func (ce CompileError) Error() string

type Conn Uses

type Conn interface {
    driver.Conn
    driver.Pinger
    Break() error
    BeginTx(ctx context.Context, opts driver.TxOptions) (driver.Tx, error)
    PrepareContext(ctx context.Context, query string) (driver.Stmt, error)
    Commit() error
    Rollback() error
    ServerVersion() (VersionInfo, error)
    GetObjectType(name string) (ObjectType, error)
    NewSubscription(string, func(Event)) (*Subscription, error)
    Startup(StartupMode) error
    Shutdown(ShutdownMode) error
    NewData(baseType interface{}, SliceLen, BufSize int) ([]*Data, error)
}

Conn is the interface for a connection, to be returned by DriverConn.

func DriverConn Uses

func DriverConn(ex Execer) (Conn, error)

DriverConn returns the *goracle.conn of the database/sql.Conn

type ConnectionParams Uses

type ConnectionParams struct {
    Username, Password, SID, ConnClass      string
    MinSessions, MaxSessions, PoolIncrement int
    IsSysDBA, IsSysOper, IsSysASM, IsPrelim bool
    HeterogeneousPool                       bool
    StandaloneConnection                    bool
    EnableEvents                            bool
}

ConnectionParams holds the params for a connection (pool). You can use ConnectionParams{...}.StringWithPassword() as a connection string in sql.Open.

func ParseConnString Uses

func ParseConnString(connString string) (ConnectionParams, error)

ParseConnString parses the given connection string into a struct.

func (ConnectionParams) String Uses

func (P ConnectionParams) String() string

String returns the string representation of ConnectionParams. The password is replaced with a "SECRET" string!

func (ConnectionParams) StringNoClass Uses

func (P ConnectionParams) StringNoClass() string

StringNoClass returns the string representation of ConnectionParams, without class info. The password is replaced with a "SECRET" string!

func (ConnectionParams) StringWithPassword Uses

func (P ConnectionParams) StringWithPassword() string

StringWithPassword returns the string representation of ConnectionParams (as String() does), but does NOT obfuscate the password, just prints it as is.

type Data Uses

type Data struct {
    ObjectType ObjectType

    NativeTypeNum C.dpiNativeTypeNum
    // contains filtered or unexported fields
}

Data holds the data to/from Oracle.

func (*Data) Get Uses

func (d *Data) Get() interface{}

Get returns the contents of Data.

func (*Data) GetBool Uses

func (d *Data) GetBool() bool

GetBool returns the bool data.

func (*Data) GetBytes Uses

func (d *Data) GetBytes() []byte

GetBytes returns the []byte from the data.

func (*Data) GetFloat32 Uses

func (d *Data) GetFloat32() float32

GetFloat32 gets float32 from the data.

func (*Data) GetFloat64 Uses

func (d *Data) GetFloat64() float64

GetFloat64 gets float64 from the data.

func (*Data) GetInt64 Uses

func (d *Data) GetInt64() int64

GetInt64 gets int64 from the data.

func (*Data) GetIntervalDS Uses

func (d *Data) GetIntervalDS() time.Duration

GetIntervalDS gets duration as interval date-seconds from data.

func (*Data) GetIntervalYM Uses

func (d *Data) GetIntervalYM() IntervalYM

GetIntervalYM gets IntervalYM from the data.

func (*Data) GetLob Uses

func (d *Data) GetLob() *Lob

GetLob gets data as Lob.

func (*Data) GetObject Uses

func (d *Data) GetObject() *Object

GetObject gets Object from data.

func (*Data) GetStmt Uses

func (d *Data) GetStmt() driver.Stmt

GetStmt gets Stmt from data.

func (*Data) GetTime Uses

func (d *Data) GetTime() time.Time

GetTime gets Time from data.

func (*Data) GetUint64 Uses

func (d *Data) GetUint64() uint64

GetUint64 gets data as uint64.

func (*Data) IsNull Uses

func (d *Data) IsNull() bool

IsNull returns whether the data is null.

func (*Data) IsObject Uses

func (d *Data) IsObject() bool

IsObject returns whether the data contains an Object or not.

func (*Data) SetBool Uses

func (d *Data) SetBool(b bool)

SetBool sets the data as bool.

func (*Data) SetBytes Uses

func (d *Data) SetBytes(b []byte)

SetBytes set the data as []byte.

func (*Data) SetFloat32 Uses

func (d *Data) SetFloat32(f float32)

SetFloat32 sets the data as float32.

func (*Data) SetFloat64 Uses

func (d *Data) SetFloat64(f float64)

SetFloat64 sets the data as float64.

func (*Data) SetInt64 Uses

func (d *Data) SetInt64(i int64)

SetInt64 sets the data as int64.

func (*Data) SetIntervalDS Uses

func (d *Data) SetIntervalDS(dur time.Duration)

SetIntervalDS sets the duration as interval date-seconds to data.

func (*Data) SetIntervalYM Uses

func (d *Data) SetIntervalYM(ym IntervalYM)

SetIntervalYM sets IntervalYM to the data.

func (*Data) SetNull Uses

func (d *Data) SetNull()

SetNull sets the value of the data to be the null value.

func (*Data) SetObject Uses

func (d *Data) SetObject(o *Object)

SetObject sets Object to data.

func (*Data) SetStmt Uses

func (d *Data) SetStmt(s *statement)

SetStmt sets Stmt to data.

func (*Data) SetTime Uses

func (d *Data) SetTime(t time.Time)

SetTime sets Time to data.

func (*Data) SetUint64 Uses

func (d *Data) SetUint64(u uint64)

SetUint64 sets data to uint64.

type DirectLob Uses

type DirectLob struct {
    // contains filtered or unexported fields
}

DirectLob holds a Lob and allows direct (Read/WriteAt, not streaming Read/Write) operations on it.

func (*DirectLob) Close Uses

func (dl *DirectLob) Close() error

Close the Lob.

func (*DirectLob) ReadAt Uses

func (dl *DirectLob) ReadAt(p []byte, offset int64) (int, error)

ReadAt reads at most len(p) bytes into p at offset.

func (*DirectLob) Set Uses

func (dl *DirectLob) Set(p []byte) error

Set the contents of the LOB to the given byte slice. The LOB is cleared first.

func (*DirectLob) Size Uses

func (dl *DirectLob) Size() (int64, error)

Size returns the size of the LOB.

func (*DirectLob) Trim Uses

func (dl *DirectLob) Trim(size int64) error

Trim the LOB to the given size.

func (*DirectLob) WriteAt Uses

func (dl *DirectLob) WriteAt(p []byte, offset int64) (int, error)

WriteAt writes p starting at offset.

type Event Uses

type Event struct {
    Tables  []TableEvent
    Queries []QueryEvent
    DB      string
    Err     error
    Type    EventType
}

Event for a subscription.

type EventType Uses

type EventType C.dpiEventType

EventType is the type of an event.

type Execer Uses

type Execer interface {
    ExecContext(context.Context, string, ...interface{}) (sql.Result, error)
}

Execer is the ExecContext of sql.Conn.

type IntervalYM Uses

type IntervalYM struct {
    Years, Months int
}

IntervalYM holds Years and Months as interval.

type Lob Uses

type Lob struct {
    io.Reader
    IsClob bool
}

Lob is for reading/writing a LOB.

func (*Lob) Hijack Uses

func (lob *Lob) Hijack() (*DirectLob, error)

Hijack the underlying lob reader/writer, and return a DirectLob for reading/writing the lob directly.

After this, the Lob is unusable!

type Number Uses

type Number string

Number as string

func (Number) MarshalJSON Uses

func (n Number) MarshalJSON() ([]byte, error)

MarshalJSON marshals a Number into a JSON string.

func (Number) MarshalText Uses

func (n Number) MarshalText() ([]byte, error)

MarshalText marshals a Number to text.

func (*Number) Scan Uses

func (n *Number) Scan(v interface{}) error

Scan into the Number from a driver.Value.

func (Number) String Uses

func (n Number) String() string

func (*Number) UnmarshalJSON Uses

func (n *Number) UnmarshalJSON(p []byte) error

UnmarshalJSON parses a JSON string into the Number.

func (*Number) UnmarshalText Uses

func (n *Number) UnmarshalText(p []byte) error

UnmarshalText parses text into a Number.

func (Number) Value Uses

func (n Number) Value() (driver.Value, error)

Value returns the Number as driver.Value

type Object Uses

type Object struct {
    ObjectType
    // contains filtered or unexported fields
}

Object represents a dpiObject.

func (*Object) Close Uses

func (O *Object) Close() error

Close releases a reference to the object.

func (*Object) Collection Uses

func (O *Object) Collection() *ObjectCollection

Collection returns &ObjectCollection{Object: O} iff the Object is a collection. Otherwise it returns nil.

func (*Object) Get Uses

func (O *Object) Get(name string) (interface{}, error)

Get scans the named attribute into dest, and returns it.

func (*Object) GetAttribute Uses

func (O *Object) GetAttribute(data *Data, name string) error

GetAttribute gets the i-th attribute into data.

func (*Object) ObjectRef Uses

func (O *Object) ObjectRef() *Object

ObjectRef implements userType interface.

func (*Object) ResetAttributes Uses

func (O *Object) ResetAttributes() error

ResetAttributes prepare all atributes for use the object as IN parameter

func (*Object) SetAttribute Uses

func (O *Object) SetAttribute(name string, data *Data) error

SetAttribute sets the i-th attribute with data.

type ObjectAttribute Uses

type ObjectAttribute struct {
    Name string

    ObjectType
    // contains filtered or unexported fields
}

ObjectAttribute is an attribute of an Object.

func (ObjectAttribute) Close Uses

func (A ObjectAttribute) Close() error

Close the ObjectAttribute.

type ObjectCollection Uses

type ObjectCollection struct {
    *Object
}

ObjectCollection represents a Collection of Objects - itself an Object, too.

func (*ObjectCollection) Append Uses

func (O *ObjectCollection) Append(data *Data) error

Append data to the collection.

func (*ObjectCollection) AsSlice Uses

func (O *ObjectCollection) AsSlice(dest interface{}) (interface{}, error)

AsSlice retrieves the collection into a slice.

func (*ObjectCollection) Delete Uses

func (O *ObjectCollection) Delete(i int) error

Delete i-th element of the collection.

func (*ObjectCollection) First Uses

func (O *ObjectCollection) First() (int, error)

First returns the first element's index of the collection.

func (*ObjectCollection) Get Uses

func (O *ObjectCollection) Get(data *Data, i int) error

Get the i-th element of the collection into data.

func (*ObjectCollection) Last Uses

func (O *ObjectCollection) Last() (int, error)

Last returns the index of the last element.

func (*ObjectCollection) Len Uses

func (O *ObjectCollection) Len() (int, error)

Len returns the length of the collection.

func (*ObjectCollection) Next Uses

func (O *ObjectCollection) Next(i int) (int, error)

Next returns the succeeding index of i.

func (*ObjectCollection) Set Uses

func (O *ObjectCollection) Set(i int, data *Data) error

Set the i-th element of the collection with data.

func (*ObjectCollection) Trim Uses

func (O *ObjectCollection) Trim(n int) error

Trim the collection to n.

type ObjectScanner Uses

type ObjectScanner interface {
    sql.Scanner
    // contains filtered or unexported methods
}

ObjectScanner assigns a value from a database object

type ObjectType Uses

type ObjectType struct {
    Schema, Name                        string
    DBSize, ClientSizeInBytes, CharSize int
    CollectionOf                        *ObjectType
    Attributes                          map[string]ObjectAttribute

    OracleTypeNum C.dpiOracleTypeNum
    NativeTypeNum C.dpiNativeTypeNum
    Precision     int16
    Scale         int8
    FsPrecision   uint8
    // contains filtered or unexported fields
}

ObjectType holds type info of an Object.

func GetObjectType Uses

func GetObjectType(ex Execer, typeName string) (ObjectType, error)

GetObjectType returns the ObjectType for the name.

func (*ObjectType) Close Uses

func (t *ObjectType) Close() error

Close releases a reference to the object type.

func (ObjectType) FullName Uses

func (t ObjectType) FullName() string

FullName returns the object's name with the schame prepended.

func (ObjectType) NewObject Uses

func (t ObjectType) NewObject() (*Object, error)

NewObject returns a new Object with ObjectType type.

type ObjectWriter Uses

type ObjectWriter interface {
    WriteObject() error
    // contains filtered or unexported methods
}

ObjectWriter update database object before binding

type Operation Uses

type Operation C.dpiOpCode

Operation in the DB.

type Option Uses

type Option func(*stmtOptions)

Option holds statement options.

var PlSQLArrays Option = func(o *stmtOptions) { o.plSQLArrays = true }

PlSQLArrays is to signal that the slices given in arguments of Exec to be left as is - the default is to treat them as arguments for ExecMany.

func ArraySize Uses

func ArraySize(arraySize int) Option

ArraySize returns an option to set the array size to be used, overriding DefaultArraySize.

func CallTimeout Uses

func CallTimeout(d time.Duration) Option

CallTimeout sets the round-trip timeout (OCI_ATTR_CALL_TIMEOUT).

See https://docs.oracle.com/en/database/oracle/oracle-database/18/lnoci/handle-and-descriptor-attributes.html#GUID-D8EE68EB-7E38-4068-B06E-DF5686379E5E

func ClobAsString Uses

func ClobAsString() Option

ClobAsString returns an option to force fetching CLOB columns as strings.

DEPRECATED.

func FetchRowCount Uses

func FetchRowCount(rowCount int) Option

FetchRowCount returns an option to set the rows to be fetched, overriding DefaultFetchRowCount.

func LobAsReader Uses

func LobAsReader() Option

LobAsReader is an option to set query columns of CLOB/BLOB to be returned as a Lob.

LOB as a reader and writer is not the most performant at all. Yes, OCI and ODPI-C provide a way to retrieve this data directly. Effectively, all you need to do is tell ODPI-C that you want a "long string" or "long raw" returned. You can do that by telling ODPI-C you want a variable with oracleTypeNum=DPI_ORACLE_TYPE_LONG_VARCHAR or DPI_ORACLE_TYPE_LONG_RAW and nativeTypeNum=DPI_NATIVE_TYPE_BYTES. ODPI-C will handle all of the dynamic fetching and allocation that is required. :-) You can also use DPI_ORACLE_TYPE_VARCHAR and DPI_ORACLE_TYPE_RAW as long as you set the size > 32767 -- whichever way you wish to use.

With the use of LOBs, there is one round-trip to get the LOB locators, then a round-trip for each read() that is performed. If you request the length there is another round-trip required. So if you fetch 100 rows with 2 CLOB columns, that means you get 401 round-trips. Using string/[]bytes directly means only one round trip. So you can see that if your database is remote with high latency you can have a significant performance penalty!

func MagicTypeConversion Uses

func MagicTypeConversion() Option

MagicTypeConversion returns an option to force converting named scalar types (e.g. "type underlying int64") to their scalar underlying type.

func NumberAsString Uses

func NumberAsString() Option

NumberAsString returns an option to return numbers as string, not Number.

func ParseOnly Uses

func ParseOnly() Option

ParseOnly returns an option to set the ExecMode to only Parse.

type OraErr Uses

type OraErr struct {
    // contains filtered or unexported fields
}

OraErr is an error holding the ORA-01234 code and the message.

func (*OraErr) Code Uses

func (oe *OraErr) Code() int

Code returns the OraErr's error code.

func (*OraErr) Error Uses

func (oe *OraErr) Error() string

func (*OraErr) Message Uses

func (oe *OraErr) Message() string

Message returns the OraErr's message.

type Querier Uses

type Querier interface {
    QueryContext(context.Context, string, ...interface{}) (*sql.Rows, error)
}

Querier is the QueryContext of sql.Conn.

type QueryColumn Uses

type QueryColumn struct {
    Name                           string
    Type, Length, Precision, Scale int
    Nullable                       bool
}

QueryColumn is the described column.

func DescribeQuery Uses

func DescribeQuery(ctx context.Context, db Execer, qry string) ([]QueryColumn, error)

DescribeQuery describes the columns in the qry.

This can help using unknown-at-compile-time, a.k.a. dynamic queries.

type QueryEvent Uses

type QueryEvent struct {
    Tables []TableEvent
    ID     uint64
    Operation
}

QueryEvent is an event of a Query.

type RowEvent Uses

type RowEvent struct {
    Rowid string
    Operation
}

RowEvent is for row-related event.

type ShutdownMode Uses

type ShutdownMode C.dpiShutdownMode

ShutdownMode for the database.

type StartupMode Uses

type StartupMode C.dpiStartupMode

StartupMode for the database.

type Subscription Uses

type Subscription struct {
    // contains filtered or unexported fields
}

Subscription for events in the DB.

func (*Subscription) Close Uses

func (s *Subscription) Close() error

Close the subscription.

This code is EXPERIMENTAL yet!

func (*Subscription) Register Uses

func (s *Subscription) Register(qry string, params ...interface{}) error

Register a query for Change Notification.

This code is EXPERIMENTAL yet!

type TableEvent Uses

type TableEvent struct {
    Rows []RowEvent
    Name string
    Operation
}

TableEvent is for a Table-related event.

type TraceTag Uses

type TraceTag struct {
    // ClientIdentifier - specifies an end user based on the logon ID, such as HR.HR
    ClientIdentifier string
    // ClientInfo - client-specific info
    ClientInfo string
    // DbOp - database operation
    DbOp string
    // Module - specifies a functional block, such as Accounts Receivable or General Ledger, of an application
    Module string
    // Action - specifies an action, such as an INSERT or UPDATE operation, in a module
    Action string
}

TraceTag holds tracing information for the session. It can be set on the session with ContextWithTraceTag.

type VersionInfo Uses

type VersionInfo struct {
    ServerRelease                                           string
    Version, Release, Update, PortRelease, PortUpdate, Full int
}

VersionInfo holds version info returned by Oracle DB.

func ClientVersion Uses

func ClientVersion(ex Execer) (VersionInfo, error)

ClientVersion returns the VersionInfo from the DB.

func ServerVersion Uses

func ServerVersion(ex Execer) (VersionInfo, error)

ServerVersion returns the VersionInfo of the client.

func (VersionInfo) String Uses

func (V VersionInfo) String() string

Package goracle imports 21 packages (graph) and is imported by 10 packages. Updated 2019-06-03. Refresh now. Tools for package owners.