使用ODBC驱动程序

时间:2017-03-02 12:30:55

标签: sql-server stored-procedures go

我有一个存储过程,名称为" vijaystoredprocedure" ,如果它是mssql中的一些查询,那么我将在Go中查询

l_query_str = fmt.Sprintf(`select * from Users where Fname='%s'`, l_firstanme)

row, err := DBC.Query(l_query_str)
    if err != nil {
        log.Fatal("Prepare failed:", err.Error())
    }

    _, rows, r_err := DBScan_fn(row)

    if r_err != nil {
        fmt.Println("no data found err")
        return
    }

现在因为我必须从存储过程中获取值...有人可以建议如何实现这一点

1 个答案:

答案 0 :(得分:1)

我正在使用github.com/alexbrainman/odbc驱动程序, 执行存储过程的示例:

    proc := "exec Dbo.vijaystoredprocedure ?, ?, ?, ?" //(Number of parameters)
    parms := []interface{}{"parm1","parm2","parm3","parm4"}// Parameters if needed

    if Stmt, err := DBC.Prepare(proc); err != nil {
        log.Fatal(err.Error())
    } else {
        defer Stmt.Close()
        if result, err := Stmt.Exec(parms...); err != nil {
            log.Fatal(err.Error())
        }
    }

存储功能的示例:

proc := "SELECT * From Dbo.[vijaystoredprocedure](?,?)" //(Number of parameters)
parms := []interface{}{"parm1","parm2"}// Parameters if needed
row, err := DBC.Query(proc, parms...)
if err != nil {
    log.Fatal("Prepare failed:", err.Error())
}

_, rows, r_err := DBScan_fn(row)

if r_err != nil {
    fmt.Println("no data found err")
    return
}