sql - 使用golang返回mysql过程

标签 sql go stored-procedures mysql-workbench

我在使用 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。

最佳答案

可以看到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)

关于sql - 使用golang返回mysql过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52140999/

相关文章:

php mysql 在同一查询中的 WHERE 子句中使用子查询结果

Golang 与 GORM。如何正确地将模型类型传递到方法中?

tsql - Entity Framework 4 : The selected stored procedure returns no columns

mysql - 当所选列中没有值时抛出异常(存储过程)

java - 检查 Java Derby 中是否存在 Schema

sql - 计算日期是否在 BST 内 - SQL Server

mysql - 输出自 MySQL 中特定日期范围以来未重复订购的客户

pointers - Go中的指针困惑

go - 读取 tar 文件的内容而不解压缩到磁盘

Oracle 存储过程 java.sql.SQLException : Invalid column type: 2012 (REF_CURSOR)