ALTER procedure [dbo].[carcallvalidation]
@carid nvarchar(100)=null
as
begin
select t.TBarcode, t.Paid,t.Status,t.DelDate from Transaction_tbl t where TBarcode=@carid
declare @transid integer=null
select @transid= t1.transactID from Transaction_tbl t1 where TBarcode=@carid
select count(k.transactid) transid from KHanger_tbl k where k.transactid=@transid
end
执行存储过程时我会这样出来:
Tbarcode paid status
1111 0 2
Transid
2
如何在vb.net中获取Transid值?
我像这样获取第一行值:
Dim cmdcarvalidation As New SqlCommand("carcallvalidation", con.connect)
cmdcarvalidation.CommandType = CommandType.StoredProcedure
cmdcarvalidation.Parameters.Add("@carid", SqlDbType.VarChar, 50, ParameterDirection.Input).Value = txtTicket.Text
dr = cmdcarvalidation.ExecuteReader
While dr.Read
tbarcode=dr("Tbarcode")
payd= dr("paid")
status= dr("status")
end while
答案 0 :(得分:0)
SqlDataReader.NextResult Method
当您有多个结果集时, NextResult
用于移动到下一个结果集 - 默认情况下,读者位于第一个结果集。
所以:
While dr.Read()
tbarcode = dr("Tbarcode")
payd = dr("paid")
status = dr("status")
End While
dr.NextResult()
While dr.Read()
transid = dr(0)
End While
dr.NextResult()
While dr.Read()
transid_count = dr(transid)
End While
如果您只想要存储过程中的第1和第3个结果(跳过SELECT @transid
结果集),则省略第二个dr.Read()
:
While dr.Read()
' process first result set
End While
dr.NextResult()
dr.NextResult()
While dr.Read()
' process the third result set
End While