oracle

package module
v1.5.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 23, 2023 License: MIT Imports: 21 Imported by: 11

README

GORM Oracle Driver

Description

GORM Oracle driver for connect Oracle DB and Manage Oracle DB, Based on CengSin/oracle and sijms/go-ora (pure go oracle client),not recommended for use in a production environment.

Required dependency Install

  • Oracle 12C+
  • Golang 1.16+
  • gorm 1.24.0+

Quick Start

How to install
go get -d github.com/godoes/gorm-oracle
Usage
package main

import (
	oracle "github.com/godoes/gorm-oracle"
	goora "github.com/sijms/go-ora/v2"
	"gorm.io/gorm"
)

func main() {
	options := map[string]string{
		"CONNECTION TIMEOUT": "90",
		"LANGUAGE":           "SIMPLIFIED CHINESE",
		"TERRITORY":          "CHINA",
		"SSL":                "false",
	}
	// oracle://user:password@127.0.0.1:1521/service
	url := oracle.BuildUrl("127.0.0.1", "1521", "service", "user", "password", options)
	dialector := oracle.New(oracle.Config{
		DSN:                 url,
		IgnoreCase:          false, // query conditions are not case-sensitive
		NamingCaseSensitive: true,  // whether naming is case-sensitive
	})
	db, err := gorm.Open(dialector, &gorm.Config{})
	if err != nil {
		// panic error or log error info
	}

	// set session parameters
	if sqlDB, err := db.DB(); err == nil {
		_ = goora.AddSessionParam(sqlDB, "TIME_ZONE", "+08:00")                                     // ALTER SESSION SET TIME_ZONE = '+08:00';
		_ = goora.AddSessionParam(sqlDB, "NLS_DATE_FORMAT", "YYYY-MM-DD")                           // ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD';
		_ = goora.AddSessionParam(sqlDB, "NLS_TIME_FORMAT", "HH24:MI:SSXFF")                        // ALTER SESSION SET NLS_TIME_FORMAT = 'HH24:MI:SS.FF3';
		_ = goora.AddSessionParam(sqlDB, "NLS_TIMESTAMP_FORMAT", "YYYY-MM-DD HH24:MI:SSXFF")        // ALTER SESSION SET NLS_TIMESTAMP_FORMAT = 'YYYY-MM-DD HH24:MI:SS.FF3';
		_ = goora.AddSessionParam(sqlDB, "NLS_TIME_TZ_FORMAT", "HH24:MI:SS.FF TZR")                 // ALTER SESSION SET NLS_TIME_TZ_FORMAT = 'HH24:MI:SS.FF3 TZR';
		_ = goora.AddSessionParam(sqlDB, "NLS_TIMESTAMP_TZ_FORMAT", "YYYY-MM-DD HH24:MI:SSXFF TZR") // ALTER SESSION SET NLS_TIMESTAMP_TZ_FORMAT = 'YYYY-MM-DD HH24:MI:SS.FF3 TZR';
	}

	// do somethings
}

Contributors

iTanken
iTanken
dzwvip
dzwvip
jinzhu
jinzhu
miclle
miclle
stevefan1999-personal
stevefan1999-personal
zhangzetao
zhangzetao

LICENSE

MIT license

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ReservedWords = hashset.New(func() []interface{} {
	reservedWords := make([]interface{}, len(ReservedWordsList))
	for i, word := range ReservedWordsList {
		reservedWords[i] = word
	}
	return reservedWords
}()...)
View Source
var ReservedWordsList = []string{}/* 142 elements not displayed */

Functions

func BuildUrl added in v1.3.0

func BuildUrl(server string, port int, service, user, password string, options map[string]string) string

BuildUrl create databaseURL from server, port, service, user, password, urlOptions this function help build a will formed databaseURL and accept any character as it convert special charters to corresponding values in URL

func ConvertNameToFormat deprecated

func ConvertNameToFormat(x string) string

Deprecated: As of v1.5.0, use the Namer.ConvertNameToFormat instead.

func ConvertToAssignments added in v1.4.2

func ConvertToAssignments(stmt *gorm.Statement) (set clause.Set)

ConvertToAssignments convert to update assignments

func Create

func Create(db *gorm.DB)

func IsReservedWord

func IsReservedWord(v string) bool

func New

func New(config Config) gorm.Dialector

func Open

func Open(dsn string) gorm.Dialector

func Update added in v1.4.2

func Update(config *callbacks.Config) func(db *gorm.DB)

Types

type Config

type Config struct {
	DriverName        string
	DSN               string
	Conn              gorm.ConnPool //*sql.DB
	DefaultStringSize uint
	DBVer             string

	IgnoreCase          bool // warning: may cause performance issues
	NamingCaseSensitive bool // whether naming is case-sensitive
}

type Dialector

type Dialector struct {
	*Config
}

func (Dialector) BindVarTo

func (d Dialector) BindVarTo(writer clause.Writer, stmt *gorm.Statement, _ interface{})

func (Dialector) ClauseBuilders

func (d Dialector) ClauseBuilders() map[string]clause.ClauseBuilder

func (Dialector) DataTypeOf

func (d Dialector) DataTypeOf(field *schema.Field) string

func (Dialector) DefaultValueOf

func (d Dialector) DefaultValueOf(*schema.Field) clause.Expression

func (Dialector) DummyTableName

func (d Dialector) DummyTableName() string

func (Dialector) Explain

func (d Dialector) Explain(sql string, vars ...interface{}) string

func (Dialector) Initialize

func (d Dialector) Initialize(db *gorm.DB) (err error)

func (Dialector) Migrator

func (d Dialector) Migrator(db *gorm.DB) gorm.Migrator

func (Dialector) Name

func (d Dialector) Name() string

func (Dialector) QuoteTo

func (d Dialector) QuoteTo(writer clause.Writer, str string)

func (Dialector) RewriteLimit

func (d Dialector) RewriteLimit(c clause.Clause, builder clause.Builder)

func (Dialector) RewriteLimit11 added in v1.3.39

func (d Dialector) RewriteLimit11(c clause.Clause, builder clause.Builder)

RewriteLimit11 Oracle11 Limit

func (Dialector) RollbackTo

func (d Dialector) RollbackTo(tx *gorm.DB, name string) error

func (Dialector) SavePoint

func (d Dialector) SavePoint(tx *gorm.DB, name string) error

type Migrator

type Migrator struct {
	migrator.Migrator
}

func (Migrator) AddColumn

func (m Migrator) AddColumn(value interface{}, field string) error

func (Migrator) AlterColumn

func (m Migrator) AlterColumn(value interface{}, field string) error

func (Migrator) AlterDataTypeOf added in v1.3.26

func (m Migrator) AlterDataTypeOf(stmt *gorm.Statement, field *schema.Field) (expr clause.Expr)

func (Migrator) AutoMigrate added in v1.3.64

func (m Migrator) AutoMigrate(dst ...interface{}) error

AutoMigrate 自动迁移模型为表结构

// 迁移并设置单个表注释
db.Set("gorm:table_comments", "用户信息表").AutoMigrate(&User{})

// 迁移并设置多个表注释
db.Set("gorm:table_comments", []string{"用户信息表", "公司信息表"}).AutoMigrate(&User{}, &Company{})

func (Migrator) ColumnTypes added in v1.3.26

func (m Migrator) ColumnTypes(value interface{}) ([]gorm.ColumnType, error)

ColumnTypes return columnTypes []gorm.ColumnType and execErr error

func (Migrator) CreateConstraint

func (m Migrator) CreateConstraint(value interface{}, name string) error

func (Migrator) CreateTable

func (m Migrator) CreateTable(values ...interface{}) error

func (Migrator) CurrentDatabase

func (m Migrator) CurrentDatabase() (name string)

func (Migrator) DropColumn

func (m Migrator) DropColumn(value interface{}, name string) error

func (Migrator) DropConstraint

func (m Migrator) DropConstraint(value interface{}, name string) error

func (Migrator) DropIndex

func (m Migrator) DropIndex(value interface{}, name string) error

func (Migrator) DropTable

func (m Migrator) DropTable(values ...interface{}) error

func (Migrator) FullDataTypeOf added in v1.5.3

func (m Migrator) FullDataTypeOf(field *schema.Field) (expr clause.Expr)

FullDataTypeOf returns field's db full data type

func (Migrator) GetTypeAliases added in v1.4.0

func (m Migrator) GetTypeAliases(databaseTypeName string) (types []string)

func (Migrator) HasColumn

func (m Migrator) HasColumn(value interface{}, field string) bool

func (Migrator) HasConstraint

func (m Migrator) HasConstraint(value interface{}, name string) bool

func (Migrator) HasIndex

func (m Migrator) HasIndex(value interface{}, name string) bool

func (Migrator) HasTable

func (m Migrator) HasTable(value interface{}) bool

func (Migrator) RenameIndex

func (m Migrator) RenameIndex(value interface{}, oldName, newName string) error

RenameIndex https://docs.oracle.com/database/121/SPATL/alter-index-rename.htm

func (Migrator) RenameTable

func (m Migrator) RenameTable(oldName, newName interface{}) (err error)

func (Migrator) TryQuotifyReservedWords

func (m Migrator) TryQuotifyReservedWords(values ...interface{}) error

func (Migrator) TryRemoveOnUpdate

func (m Migrator) TryRemoveOnUpdate(values ...interface{}) error

type Namer

type Namer struct {
	schema.NamingStrategy

	CaseSensitive bool // whether naming is case-sensitive
}

func (Namer) CheckerName

func (n Namer) CheckerName(table, column string) (name string)

func (Namer) ColumnName

func (n Namer) ColumnName(table, column string) (name string)

func (Namer) ConvertNameToFormat added in v1.5.0

func (n Namer) ConvertNameToFormat(x string) string

func (Namer) IndexName

func (n Namer) IndexName(table, column string) (name string)

func (Namer) JoinTableName

func (n Namer) JoinTableName(table string) (name string)

func (Namer) RelationshipFKName

func (n Namer) RelationshipFKName(relationship schema.Relationship) (name string)

func (Namer) TableName

func (n Namer) TableName(table string) (name string)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL