使用golang返回mysql程序

问题描述 投票:2回答:1

我在使用golang返回程序时遇到问题。如果我从过程中删除参数,则程序正常执行,但是,当我需要获得返回(OUT参数)时,我无法获取它并且不执行该过程。为了使测试更简单并获得帮助,我创建了一个简单的过程,如下所示,我希望得到它的回报。

请按照以下步骤:


drop procedure if exists PESSOA_TESTE;

delimiter $$


create procedure PESSOA_TESTE(out psaida int)

begin

set psaida = 2;

end

$$

现在它遵循我用来尝试获取过程中指定的值2的golang代码部分。

var GerenciaBD GERENCIABD
var PontoExecucao int

GerenciaBD.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。

sql go stored-procedures mysql-workbench
1个回答
0
投票

您可以看到here out库尚未实现https://github.com/go-sql-driver/mysql参数的使用。

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

存储过程:

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)
© www.soinside.com 2019 - 2024. All rights reserved.