关于从存储过程中取数的问题

fyming fyming 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
Dim conn As SqlConnection
Dim cmd As SqlCommand
Dim myReader As SqlDataReader
Dim myPrm As SqlParameter()

Dim lngRows As Long
Dim lngErrCode As Long

Dim i As Integer, j As Integer

conn = New SqlConnection(connDbStr)
conn.Open()

cmd = New SqlCommand("test", conn)
With cmd
.CommandType = CommandType.StoredProcedure
.CommandTimeout = 0
.Connection = conn

.Parameters.Add("@v", SqlDbType.Int).Value = 1

.Parameters.Add("@lngErrCode", SqlDbType.Int)
.Parameters("@lngErrCode").Direction = ParameterDirection.Output
.Parameters.Add("@Rows", SqlDbType.Int)
.Parameters("@Rows").Direction = ParameterDirection.Output

End With
----------------------------------------------------------------
上面代码表示打开SQL SERVER的一个存储过程test,三个参数:@v,@lngErrCode和@Rows,其中@lngErrCode和@Rows需要返回值

目的:我想要该存储过程将返回一个纪录集和两个参数@lngErrCode和@Rows,看下面代码:

'-------返回值-----------------------------
i = cmd.ExecuteNonQuery
lngErrCode = cmd.Parameters("@lngErrCode").Value
lngRows = cmd.Parameters("@Rows").Value

'-------获取数据集----------------------------
myReader = cmd.ExecuteReader()
myReader.Read()
……

现在的问题是:
i = cmd.ExecuteNonQuery
和
myReader = cmd.ExecuteReader()

不是要两次打开数据库吗?能不能打开一次数据就把参数返回值和纪录集都抓取过来呢?这在VB6时代不是问题,但在VB.net中我不知怎么写了,兄弟们帮忙看看
...全文
评论 15
收藏 已收藏
分享
返回顶部
fyming
VB 16,718 成员 110,520 内容