func (cursor *Cursor) fbCursorDrop() (err error) { var isc_status [20]C.ISC_STATUS if cursor.open { C.isc_dsql_free_statement(&isc_status[0], &cursor.stmt, C.DSQL_close) if err = fbErrorCheck(&isc_status); err != nil { return } } C.isc_dsql_free_statement(&isc_status[0], &cursor.stmt, C.DSQL_drop) return fbErrorCheck(&isc_status) }
func (cursor *Cursor) Close() (err error) { var isc_status [20]C.ISC_STATUS if err = cursor.check(); err != nil { return } C.isc_dsql_free_statement(&isc_status[0], &cursor.stmt, C.DSQL_close) if err = fbErrorCheckWarn(&isc_status); err != nil { return } C.isc_dsql_free_statement(&isc_status[0], &cursor.stmt, C.DSQL_drop) if err = fbErrorCheck(&isc_status); err != nil { return } cursor.open = false if cursor.connection.transact == cursor.auto_transact { err = cursor.connection.Commit() cursor.auto_transact = cursor.connection.transact } cursor.Fields = nil cursor.FieldsMap = nil return }
func (cursor *Cursor) execute(sql string, args ...interface{}) (rowsAffected int, err error) { var isc_status [20]C.ISC_STATUS if cursor.open { C.isc_dsql_free_statement(&isc_status[0], &cursor.stmt, C.DSQL_close) if err = fbErrorCheck(&isc_status); err != nil { return } cursor.open = false } if cursor.connection.TransactionStarted() { rowsAffected, err = cursor.execute2(sql, args...) } else { cursor.connection.transactionStart(nil) cursor.auto_transact = cursor.connection.transact rowsAffected, err = cursor.execute2(sql, args...) if err != nil { cursor.connection.Rollback() } else if rowsAffected < 0 { cursor.connection.Commit() } } return }