以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 Dot NET,C#,ASP,VB 』  (http://bbs.xml.org.cn/list.asp?boardid=43)
----  [合集] 存储过程返回多个结果集如何绑定在一个DataGrid上  (http://bbs.xml.org.cn/dispbbs.asp?boardid=43&rootid=&id=11812)


--  作者:admin
--  发布时间:11/9/2004 2:26:00 AM

--  [合集] 存储过程返回多个结果集如何绑定在一个DataGrid上


发信人: Nineteen (-_-#!), 信区: DotNET
标  题: [合集] 存储过程返回多个结果集如何绑定在一个DataGrid上
发信站: BBS 水木清华站 (Tue Nov  4 11:36:02 2003), 站内

☆─────────────────────────────────────☆
   jojo001 (笨小孩) 于  (Sun Jun  8 18:26:10 2003)  提到:

如题。



☆─────────────────────────────────────☆
   jojo001 (笨小孩) 于  (Mon Jun  9 09:48:00 2003)  提到:

大家都没有人来回么?

我做了实验,结果如下:
1。存储过程中执行的是select * from tablename (任意个),
   返回的dataset的tables也将是多个,通过dataset.tables[tablename]访问。
2。存储过程中执行的是cursor, 并以fetch返回一行,(在sqlplus中执行通过)
   此时dataset.tables[0].rows.count却为0。

这是为什么,请问通过什么得到fetch返回的行(可能是多行)呢?

【 在 jojo001 (笨小孩) 的大作中提到: 】
∶如题。




☆─────────────────────────────────────☆
   lbx (_root.play) 于  (Mon Jun  9 09:57:56 2003)  提到:

多个结果集的时候,dataset中的tables是用默认名称进行保存的吧
table,table1,这时要用map来建立别名
看看书上的例子
string strConn, strSQL;
strConn = "Provider=SQLOLEDB;Data Source=(local)\\NetSDK;" +  
          "Initial Catalog=Northwind;Trusted_Connection=Yes;";
strSQL = "SELECT CustomerID, CompanyName, ContactName, Phone " +
         "FROM Customers WHERE CustomerID = 'ALFKI'; " +
         "SELECT OrderID, CustomerID, EmployeeID, OrderDate " +  
         "FROM Orders WHERE CustomerID = 'ALFKI'";
OleDbDataAdapter da = new OleDbDataAdapter(strSQL, strConn);
da.TableMappings.Add("Table", "Customers");
da.TableMappings.Add("Table1", "Orders");
DataSet ds = new DataSet();
da.Fill(ds);

存储过程用的少,不过我觉得cursor每次fetch就是返回一行的,不知道你怎么让他
返回很多行
【 在 jojo001 (笨小孩) 的大作中提到: 】
∶大家都没有人来回么?
∶我做了实验,结果如下:
∶1。存储过程中执行的是select * from tablename (任意个),
∶返回的dataset的tables也将是多个,通过dataset.tables[tablename]访问。
∶2。存储过程中执行的是cursor, 并以fetch返回一行,(在sqlplus中执行通过)
∶此时dataset.tables[0].rows.count却为0。
∶这是为什么,请问通过什么得到fetch返回的行(可能是多行)呢?




☆─────────────────────────────────────☆
   lbx (_root.play) 于  (Mon Jun  9 10:03:36 2003)  提到:

hoho,刚才看了看ms ado.net的ebook,里面有这个说明
Oracle Stored Procedures
Oracle stored procedures cannot return rows from a query in the way that
SQL Server stored procedures can. Oracle stored procedures can return  
data only through output parameters. However, the Microsoft OLE DB  
Provider for Oracle and the Microsoft ODBC Driver for Oracle allow you to call
Oracle stored procedures and fetch the results of a query through  
output parameters. This feature is documented in various articles in the  
Microsoft Knowledge Base. A query string would follow this syntax:

{CALL PackageName.ProcName (?, {resultset 20, OutParam1,  
                                OutParam2, ... })}


【 在 jojo001 (笨小孩) 的大作中提到: 】
∶大家都没有人来回么?
∶我做了实验,结果如下:
∶1。存储过程中执行的是select * from tablename (任意个),
∶返回的dataset的tables也将是多个,通过dataset.tables[tablename]访问。
∶2。存储过程中执行的是cursor, 并以fetch返回一行,(在sqlplus中执行通过)
∶此时dataset.tables[0].rows.count却为0。
∶这是为什么,请问通过什么得到fetch返回的行(可能是多行)呢?




☆─────────────────────────────────────☆
   jojo001 (笨小孩) 于  (Mon Jun  9 10:46:22 2003)  提到:

刚才没有说清楚不好意思。
我现在用的数据库是sqlserver2000。
游标中使用多个fetch,就可以返回多个行集啦
(行的数目与fetch的数目相关)
现在不知道怎么才能得到fetch返回的记录;
或者有没有办法,比如将fetch取得的数据存入到一个临时表
(申明该表的结构是预先不知道的,不能使用一个永久表)中,
然后在select * from #temptable
本人对存储过程不熟悉,试了但没有成功。
请教大家!多谢!

【 在 jojo001 (笨小孩) 的大作中提到: 】




☆─────────────────────────────────────☆
   lbx (_root.play) 于  (Mon Jun  9 11:00:29 2003)  提到:

能说说你的要求嘛,也许可以不用cursor
【 在 jojo001 (笨小孩) 的大作中提到: 】
∶刚才没有说清楚不好意思。
∶我现在用的数据库是sqlserver2000。
∶游标中使用多个fetch,就可以返回多个行集啦
∶(行的数目与fetch的数目相关)
∶现在不知道怎么才能得到fetch返回的记录;
∶或者有没有办法,比如将fetch取得的数据存入到一个临时表
∶(申明该表的结构是预先不知道的,不能使用一个永久表)中,
∶然后在select * from #temptable
∶本人对存储过程不熟悉,试了但没有成功。
∶请教大家!多谢!




☆─────────────────────────────────────☆
   jojo001 (笨小孩) 于  (Mon Jun  9 11:10:43 2003)  提到:

好的。
我现在做的东东是允许动态显示的,就是说select语句是可以用户输入的
(表名,列名都不首限制,只要数据库能正确执行就行)
然后将返回的结果(任意行)绑定到DataGrid中显示出来。

由于数据量比较大,又必须分页处理,(还是数据量大的原因)
我使用的是存储过程,而不是直接用select top(sqlserver2000中没有row_id),
然后我想用fetch返回某一页下的多少行纪录(多个fetch就行了)。


【 在 lbx (_root.play) 的大作中提到: 】
∶能说说你的要求嘛,也许可以不用cursor




☆─────────────────────────────────────☆
   lbx (_root.play) 于  (Mon Jun  9 11:30:18 2003)  提到:

据我所知,cursor的效率是比较低的,你这么操作的我想适得其反
【 在 jojo001 (笨小孩) 的大作中提到: 】
∶好的。
∶我现在做的东东是允许动态显示的,就是说select语句是可以用户输入的
∶(表名,列名都不首限制,只要数据库能正确执行就行)
∶然后将返回的结果(任意行)绑定到DataGrid中显示出来。
∶由于数据量比较大,又必须分页处理,(还是数据量大的原因)
∶我使用的是存储过程,而不是直接用select top(sqlserver2000中没有row_id),
∶然后我想用fetch返回某一页下的多少行纪录(多个fetch就行了)。




☆─────────────────────────────────────☆
   jojo001 (笨小孩) 于  (Mon Jun  9 11:32:12 2003)  提到:

哦,我还没有试验比较过,你有什么好的办法么?多谢指教!
【 在 lbx (_root.play) 的大作中提到: 】
∶据我所知,cursor的效率是比较低的,你这么操作的我想适得其反




上一篇
返回上一页
回到目录
回到页首
下一篇



W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
234.375ms