为了账号安全,请及时绑定邮箱和手机立即绑定

使用golang返回mysql过程

使用golang返回mysql过程

Go
森栏 2023-03-29 15:56:15
我在使用 golang 返回过程时遇到问题。如果我从过程中删除参数,过程将正常执行,但是,当我需要获取返回值(OUT 参数)时,我无法获取它并且过程不会执行。为了使测试更简单并获得帮助,我创建了一个简单的过程,如下所示,我想得到它的回报。请遵循以下程序:drop procedure if exists PESSOA_TESTE;delimiter $$create procedure PESSOA_TESTE(out psaida int)beginset psaida = 2;end$$现在它遵循我用来尝试获取过程中指定的值 2 的 golang 代码部分。var GerenciaBD GERENCIABDvar PontoExecucao intGerenciaBD.F_GERENCIABD_ABRIR_CONEXAO_MYSQL()GerenciaBD.DataBase.ExecContext(context.TODO(),"call PESSOA_TESTE", sql.Named("psaida", sql.Out{Dest:&PontoExecucao}))println(PontoExecucao)执行时我的答案是 0 而不是 2,这是过程中指定的答案。我的 golang 版本是 1.10。
查看完整描述

1 回答

?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

我不确定你想用你的代码做什么,但如果你只想返回一个值,你可以这样做:

存储过程:

drop procedure if exists PESSOA_TESTE;


delimiter $$



create procedure PESSOA_TESTE(IN psaida int)


begin

SET psaida = 2;

select psaida;


end


$$

代码:


   var GerenciaBD GERENCIABD

    var PontoExecucao int


    GerenciaBD.F_GERENCIABD_ABRIR_CONEXAO_MYSQL()


    GerenciaBD.DataBase.QueryRowContext(context.TODO(),"CALL PESSOA_TESTE(?)", PontoExecucao).Scan(&PontoExecucao)


    println(PontoExecucao)


查看完整回答
反对 回复 2023-03-29
  • 1 回答
  • 0 关注
  • 102 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信