out参数

  • 1) Returning into语法
func outParam(db * sql.DB){
                            //用于存储返回的参数
                    var outVal    int
                    var err       error
                    var insertSQL string = `insert into testcase1(col1) values (:1) returning col1 into :c2`
                    //此处占位符名称需使用字母开头
                    _, err = db.Exec(insertSQL, 10, sql.Named("c2", sql.Out{Dest: &outVal}))
                    getError(err)
                    fmt.Println(outVal)
            }
  • 2) 存储过程out参数语法
func outProcedure(db * sql.DB) {
        var err                error
        var outInt             int
        var createProcedureSQl string = `CREATE OR REPLACE PROCEDURE mygp4
                (
                        yname IN  INT ,
                        pwd   OUT INT
                )
                AS
                BEGIN
                        pwd = yname + 1;
                END;`
        var querySQL           string = "begin mygp4(:yname, :pwd);end;"
        //创建存储过程
        _, err = db.Exec(createProcedureSQl)
        getError(err)
        //调用存储过程
        _, err = db.Exec(querySQL, 1234, sql.Named("pwd",sql.Out{Dest: &outInt}))
        getError(err)
        fmt.Println(outInt)
}