-1
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
4

1 に答える 1

0

SqlDataReader.NextResult メソッド

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結果セットをスキップ)、2 番目を省略します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
于 2013-06-29T16:13:49.893 に答える