Skip to content

Instantly share code, notes, and snippets.

@ClarksonCJ
Last active January 6, 2017 14:19
Show Gist options
  • Save ClarksonCJ/86f03e08f9298e8cad1edaed718a78ce to your computer and use it in GitHub Desktop.
Save ClarksonCJ/86f03e08f9298e8cad1edaed718a78ce to your computer and use it in GitHub Desktop.
package main
import (
"database/sql"
"github.com/Sirupsen/logrus"
_ "github.com/mattn/go-oci8"
)
/*
Table DDL used for Demo on Oracle XE 11.2
CREATE TABLE ERROR_REPRO
(
ID NUMBER(*)
);
*/
func main() {
logrus.SetFormatter(&logrus.JSONFormatter{})
logrus.SetLevel(logrus.DebugLevel)
logger := logrus.WithField("ProcessName", "ORA-01000 demo")
logger.Debug("main: Starting up")
logger.Debug("main: Connecting to DB")
con, err := sql.Open("oci8", "username/password@localhost:1521")
if err != nil {
logger.WithField("error", err).Error("main: failed to connect to database")
logger.Fatal(err)
}
defer func() {
err = con.Close()
if err != nil {
logger.WithError(err).Error("Error closing database connection")
} else {
logger.Info("Closed database connection, exiting....")
}
}()
logger.Info("Using stmt.Exec...")
stmt, err := con.Prepare("INSERT INTO ERROR_REPRO(ID) VALUES (:1)")
defer stmt.Close()
if err != nil {
logger.WithError(err).Error("Failed to prepare statement")
return
}
for i := 0; i < 500; i++ {
_, err := stmt.Exec(i)
if err != nil {
logger.WithFields(logrus.Fields{
"error": err,
"ID": i,
}).Error("stmt.Exec Failed to write test data")
} else {
logger.WithField("ID", i).Info("stmt.Exec record written successfully")
}
}
logger.Info("End of Using stmt.Exec...")
logger.Info("Using db.Exec...")
for i := 0; i < 500; i++ {
_, err := con.Exec("INSERT INTO ERROR_REPRO(ID) VALUES (:1)", i)
if err != nil {
logger.WithFields(logrus.Fields{
"error": err,
"ID": i,
}).Error("db.Exec Failed to write test data")
} else {
logger.WithField("ID", i).Info("db.Exec record written successfully")
}
}
logger.Info("End of Using db.Exec...")
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment