К сожалению, драйвер MySQL, по крайней мере, go-sql-driver/mysql
, не поддерживает Out
параметров.Но вы все равно можете использовать переменную сеанса MySQL для получения значения параметра out.
Вам необходимо включить поддержку нескольких операторов, чтобы это работало, хотя
dsn := fmt.Sprintf(
"%s:%s@%s/%s?charset=utf8&multiStatements=true", // <-- add this
DB_USER, DB_PASS, DB_HOST, DB_NAME,
)
и затем
// initialize @out to ensure we're not getting a previous value
q := "SET @out=NULL"
// execute our SP
q += fmt.Sprintf(
";CALL regWorker('%s', '%s', '%s', '%s', '%s', @out)",
"Thuto", "Deere4454de", "fueqx@mdj4f.com", "8725554675364", "94874256443",
)
// return the resultset containing the value of the out parameter
q += ";SELECT COALESCE(@out, 0)"
var out int
db.QueryRow(q).Scan(&out)
В этом примере я предположил, что параметр out
имеет тип int
.Отрегулируйте соответственно вашим требованиям.
Примечание: к сожалению, вы не сможете использовать подготовленное утверждение в этом случае;поэтому вам нужно позаботиться о надлежащей дезинфекции и экранировании значений параметров, чтобы предотвратить инъекции sql.