go 如何调用 sqlserver 带传出参数的存储过程

go get github.com/denisenkom/go-mssqldb

说明

  • 例如有个叫proc的存储过程,接收7个varchar参数,两个传出参数@on_return,@on_message.
  • 这个包我看了一圈都不知道如何用简便快捷的方法快速获取返回值,所以才用了比较笨的方法,知道快速获取的朋友,希望能告知。

实现

实现思路:拼接sql,返回结果集。

declare @p1 int
set @p1=0
declare @p2 varchar(1024)
set @p2=''
exec proc N'1',N'2',N'3',N'4',N'5',N'6',N'7',@p1 output,@p2 output
select @p1,@p2

golang实现

//参数拼接
params := fmt.Sprintf("N'%s',N'%s',N'%s',N'%s',N'%s',N'%s',N'%s'",
"1","2","3","4","5","6","7")
sqlRaw := `
declare @p1 int
set @p1=0
declare @p2 varchar(1024)
set @p2=''
exec proc `+params+`,@p1 output,@p2 output
select @p1,@p2
`
rows,err:=sqlServer.Query(sqlRaw)
if err != nil {
log.Fatal(err)
}
var onReturn int
var onMessage string
for rows.Next(){
rows.Scan(&onReturn,&onMessage)
}
rows.Close()
log.Println(onReturn,onMessage)

ps:如果是返回结果集的存储过程,直接Query('exce proc')即可,当做普通的查询即可

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!