Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用golang返回mysql过程_Sql_Go_Stored Procedures_Mysql Workbench - Fatal编程技术网

使用golang返回mysql过程

使用golang返回mysql过程,sql,go,stored-procedures,mysql-workbench,Sql,Go,Stored Procedures,Mysql Workbench,我在使用golang获取程序返回时遇到问题。如果我从程序中删除参数,程序将正常执行,但是,当我需要获取返回(OUT参数)时,我无法获取它,并且程序不会执行。为了简化测试并获得帮助,我创建了一个简单的过程,如下所示,我希望得到它的返回 遵循以下程序: 现在,它遵循golang代码的一节,我正在使用它来尝试获取过程中指定的值2 var GerenciaBD GERENCIABD var PontoExecucao int GerenciaBD.F_GERENCIABD_ABRIR_CONEXAO

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

遵循以下程序:


现在,它遵循golang代码的一节,我正在使用它来尝试获取过程中指定的值2

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,这是过程中指定的答案

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)
我的golang版本为1.10。

您可以看到,
out
参数的用法尚未在
https://github.com/go-sql-driver/mysql
library

我不确定您想对代码执行什么操作,但如果您只想返回一个值,可以执行以下操作:

存储过程:

drop procedure if exists PESSOA_TESTE;

delimiter $$

create procedure PESSOA_TESTE(IN psaida int)

begin
SET psaida = 2;
select psaida;

end

$$
代码:


您使用的是golang的哪个mysql库?我使用这个。对于其他人,这里是golang的另一个工作示例:
   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)