go 如何呼叫 sqlserver 帶傳出引數的儲存過程

clago發表於2019-05-23

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 協議》,轉載必須註明作者和本文連結

相關文章