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 协议》,转载必须注明作者和本文链接