package main import ( "PsycheEpic/src/config" "PsycheEpic/src/datasource" "fmt" _ "github.com/go-sql-driver/mysql" ) // 定义一个结构体,用于接收存储过程的输出参数 /* type Result struct { OutParam int `xorm:"out_param"` } */ func main() { config.InitConfig() datasource.InitMysql() // 创建一个存储过程,接收一个输入参数in_param,返回一个输出参数out_param // 存储过程的逻辑是将输入参数加10后赋值给输出参数 sql := `CREATE PROCEDURE add_ten(IN in_param INT, OUT out_param INT) BEGIN SET out_param = in_param + 10; END` _, err := datasource.Engine.Exec(sql) if err != nil { fmt.Println(err) return } // 调用存储过程,传入一个输入参数10,使用一个Result结构体变量接收输出参数 var out_param int _, err = datasource.Engine.Exec("CALL add_ten(?, @out_param)", 10) if err != nil { fmt.Println(err) return } // 从MySQL中获取存储过程的输出参数 _, err = datasource.Engine.SQL("SELECT @out_param").Get(&out_param) if err != nil { fmt.Println(err) return } // 打印输出参数的值,应该是20 fmt.Println(out_param) }