我在使用 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)
- 1 回答
- 0 關注
- 135 瀏覽
添加回答
舉報
0/150
提交
取消