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

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

package main

import (
    "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)
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值