存儲過程返回的多結果集數據,ado怎么打開這些結果集並取得數據?(


有這樣一個存儲過程:

CREATE PROCEDURE GetRecordFromPage2
@sqlstr nvarchar(4000), --查詢字符串
@pagecount int, --第N頁
@pagesize int --每頁行數

AS

set nocount on
declare @P1 int, --P1是游標的id
@rowcount int

exec sp_cursoropen @P1 output,@sqlstr,@scrollopt=1,@ccopt=1,@rowcount=@rowcount output
select @rowcount as rowSum,ceiling(1.0*@rowcount/@pagesize) as pageSum,@pagecount as Page
set @pagecount=(@pagecount-1)*@pagesize+1
exec sp_cursorfetch @P1,16,@pagecount,@pagesize 
exec sp_cursorclose @P1
set nocount off
GO

--------------
我執行語句
GetRecordFromPage2 [SQL語句....],1,10

返回結果是
id          imgname              imgurl                                   
----------- -------------------- ---------------------------------------- 

rowSum      pageSum                    Page        
----------- -------------------------- ----------- 
2452        246                        1

id          imgname              imgurl                                   
----------- -------------------- ---------------------------------------- 
1317        馮小剛                  /mmsimg/comm/7210/dt2.jpg
52212       憨豆先生                 /mmsimg/comm/7210/278567.jpg
60833       大山                   /mmsimg/comm/7210/dt3.jpg
20872       梁天                   /mmsimg/comm/7210/dt8.jpg
73430       劉歡                   /mmsimg/comm/7210/278300.jpg
52237       葛優                   /mmsimg/comm/7210/278292.jpg
73074       崔永元                  /mmsimg/comm/7210/dt4.jpg
40579       米盧                   /mmsimg/comm/7210/dt9.jpg
4108        關之琳                  /mmsimg/comm/7210/dt1.jpg
54087       葛優                   /mmsimg/comm/7210/dt10.jpg






問題是,這個存儲過程,一次返回3個結果集,我不知道怎么用ADO對象分別取得各個結果集的數據。

11 个解决方案

#1


UP

#2


sql好像有方法可以取得返回值的吧!

#3


SqlDataAdapter myDataAdapter = new SqlDataAdapter("GetRecordFromPage2",myConnection);
myDataAdapter.SelectCommand.CommandType = CommandType.StoredProcedure;

myDataAdapter.SelectCommand.Parameters.Add("@sqlstr",sqlstr);
myDataAdapter.SelectCommand.Parameters.Add("@pagecount",pagecount);
myDataAdapter.SelectCommand.Parameters.Add("@pagesize",pagesize);

DataSet ds = new DataSet();
myDataAdapter.Fill(ds);
return ds;

ds.Tables[0],ds.Tables[1],ds.Tables[2],分別對應三個結果集

#4


如果是ASP,他用的是ADO,不是ADO.net,那怎么分別取得3個結果集呢?

#5


...

#6


ASP不熟悉,去ASP版問吧

#7


up

#8


<% set cmm=server.createobject("adodb.command")
set rs=server.createobject("adodb.recordset")

cmm.commandtype=4
cmm.activeconnection=conn
cmm.commandtext="proc_name"
set rs=cmm.execute
cmm.execute %>

  <% while not rs.eof 
response.write rs(0)

 rs.movenext
  wend
  %>
  <% 
  set rs2=rs.NextRecordset()
  while not rs2.eof 
response.write rs2(0)
      rs2.movenext
  wend
...........
  rs2.close
  set rs2=nothing %>

#9


如果是在asp.net中就不用這樣了,取就更方便了,如果返回dataset則用索引就可以了

#10


<!-- #include file="conn.asp" -->
<%

sqlstr="GetRecordFromPage2 [select a.id,a.imgname,a.imgurl from colorpic a,picmobile b where left(a.classid,4)='1020' and mobileid='0102' and a.id=b.picid],3,10"
set bb = Server.CreateObject("ADODB.Recordset")

bb.open sqlstr,conn,3,1
do while not bb.eof
Response.write bb(0)
bb.movenext
loop
set tt=bb.NextRecordset()
do while not tt.eof
Response.write tt(0)
tt.movenext
loop

set tt1=bb.NextRecordset()
do while not tt1.eof
Response.write tt1(0)
tt1.movenext
loop


bb.close
set bb=nothing
conn.close
set conn=nothing
%>


你前面的方法,我執行時到cmm.execute就報錯。

我這樣寫的,但也是報錯。 麻煩你按你的方法,幫我改造一下我的程序。


2452816419220861478613264759975638110080910268392593 
ADODB.Recordset 錯誤 '800a0cb3' 

當前提供程序不支持從單一執行返回多個記錄集。 

/test.asp,行 18 

#11


我搞定了。 謝謝

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com