mirror of
https://github.com/documize/community.git
synced 2025-07-26 00:29:47 +02:00
Update SQL Server driver library
This commit is contained in:
parent
c538fc9eb1
commit
9c36241b58
37 changed files with 9138 additions and 1091 deletions
114
vendor/github.com/denisenkom/go-mssqldb/tvp_example_test.go
generated
vendored
Normal file
114
vendor/github.com/denisenkom/go-mssqldb/tvp_example_test.go
generated
vendored
Normal file
|
@ -0,0 +1,114 @@
|
|||
// +build go1.10
|
||||
|
||||
package mssql_test
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
"flag"
|
||||
"fmt"
|
||||
"log"
|
||||
|
||||
mssql "github.com/denisenkom/go-mssqldb"
|
||||
)
|
||||
|
||||
// This example shows how to use tvp type
|
||||
func ExampleTVP() {
|
||||
const (
|
||||
createTable = "CREATE TABLE Location (Name VARCHAR(50), CostRate INT, Availability BIT, ModifiedDate DATETIME2)"
|
||||
|
||||
dropTable = "IF OBJECT_ID('Location', 'U') IS NOT NULL DROP TABLE Location"
|
||||
|
||||
createTVP = `CREATE TYPE LocationTableType AS TABLE
|
||||
(LocationName VARCHAR(50),
|
||||
CostRate INT)`
|
||||
|
||||
dropTVP = "IF type_id('LocationTableType') IS NOT NULL DROP TYPE LocationTableType"
|
||||
|
||||
createProc = `CREATE PROCEDURE dbo.usp_InsertProductionLocation
|
||||
@TVP LocationTableType READONLY
|
||||
AS
|
||||
SET NOCOUNT ON
|
||||
INSERT INTO Location
|
||||
(
|
||||
Name,
|
||||
CostRate,
|
||||
Availability,
|
||||
ModifiedDate)
|
||||
SELECT *, 0,GETDATE()
|
||||
FROM @TVP`
|
||||
|
||||
dropProc = "IF OBJECT_ID('dbo.usp_InsertProductionLocation', 'P') IS NOT NULL DROP PROCEDURE dbo.usp_InsertProductionLocation"
|
||||
|
||||
execTvp = "exec dbo.usp_InsertProductionLocation @TVP;"
|
||||
)
|
||||
type LocationTableTvp struct {
|
||||
LocationName string
|
||||
LocationCountry string `tvp:"-"`
|
||||
CostRate int64
|
||||
Currency string `json:"-"`
|
||||
}
|
||||
|
||||
flag.Parse()
|
||||
|
||||
if *debug {
|
||||
fmt.Printf(" password:%s\n", *password)
|
||||
fmt.Printf(" port:%d\n", *port)
|
||||
fmt.Printf(" server:%s\n", *server)
|
||||
fmt.Printf(" user:%s\n", *user)
|
||||
}
|
||||
|
||||
connString := makeConnURL().String()
|
||||
if *debug {
|
||||
fmt.Printf(" connString:%s\n", connString)
|
||||
}
|
||||
|
||||
db, err := sql.Open("sqlserver", connString)
|
||||
if err != nil {
|
||||
log.Fatal("Open connection failed:", err.Error())
|
||||
}
|
||||
defer db.Close()
|
||||
|
||||
_, err = db.Exec(createTable)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
_, err = db.Exec(createTVP)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
defer db.Exec(dropTVP)
|
||||
_, err = db.Exec(createProc)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
defer db.Exec(dropProc)
|
||||
|
||||
locationTableTypeData := []LocationTableTvp{
|
||||
{
|
||||
LocationName: "Alberta",
|
||||
LocationCountry: "Canada",
|
||||
CostRate: 0,
|
||||
Currency: "CAD",
|
||||
},
|
||||
{
|
||||
LocationName: "British Columbia",
|
||||
LocationCountry: "Canada",
|
||||
CostRate: 1,
|
||||
Currency: "CAD",
|
||||
},
|
||||
}
|
||||
|
||||
tvpType := mssql.TVP{
|
||||
TypeName: "LocationTableType",
|
||||
Value: locationTableTypeData,
|
||||
}
|
||||
|
||||
_, err = db.Exec(execTvp, sql.Named("TVP", tvpType))
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
} else {
|
||||
for _, locationData := range locationTableTypeData {
|
||||
fmt.Printf("Data for location %s, %s has been inserted.\n", locationData.LocationName, locationData.LocationCountry)
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue