golang mysql多语句查询及调用存储过程

来源:互联网 发布:ecshop导入淘宝数据包 编辑:程序博客网 时间:2024/05/16 12:22

之前的golang版本,由于sql标准库不支持多结果集的返回,所以也就影响了存储过程,那时候只能调用插入和更新类的存储过程,即db.exec(“call function_name”), 从golang 1.8开始,支持多结果集, https://blog.gopheracademy.com/advent-2016/database_sql/

package mainimport (    "database/sql"    _ "github.com/go-sql-driver/mysql"    "log"    "fmt")func main() {    db, err := sql.Open("mysql", "root:root@/test?multiStatements=true")    if err != nil {        log.Println(err)    }    defer db.Close()    err = db.Ping()    if err != nil {        log.Println(err.Error())    }    rows, err := db.Query(`    select username from users limit 0, 10;    select uuid from users limit 0, 10;`)    if err != nil {        log.Print(err.Error())    }    defer rows.Close()    for rows.Next() {        name := ""        rows.Scan(&name)        fmt.Println(name)    }    if !rows.NextResultSet() {        log.Fatal("expected more result sets", rows.Err())    }    for rows.Next() {        uuid := ""        rows.Scan(&uuid)        fmt.Println(uuid)    }    rows, err = db.Query(`call id_users(?)`, 10)    if err != nil {        log.Print(err)    }    for rows.Next() {        name := ""        rows.Scan(&name)        fmt.Println(name)    }}
原创粉丝点击