mssql 游标有感

mssql 游标有感,第1张

概述无意间了解到MSSQL的游标,知道了一种情况下需要使用游标。举例如下:一、情况1有两张表:表A、表B,关系为 表A 1——>* 表B如果要求查出和表A数据列一一对应的所有表B的数据列时,这个时候

无意间了解到MSsql的游标,知道了一种情况下需要使用游标。举例如下:

一、情况1

有两张表:表A、表B,关系为 表A  1——>* 表B

如果要求查出和表A数据列一一对应的所有表B的数据列时,这个时候就需要使用游标来查询。

伪代码:

 1 var tempitem=new List<tableBItem>();//用于存储查询出的所有表B的数据列 2  3 var parmarykeyList=new List<int>(); 4  5 parmarykeyList=tableA.GetParmaryKeyList();获取表A的主键List。 6  7 foreach(var k in parmarykeyList)根据表A的主键查询所有该组键对应的表B的Item 8  9 {10 11    tempitem.Add(tableB.Where(b=>b.tableAParmaryKey==k).ToList());12 13 }14 return tempitem;

相对于mssql中:

第三行代码相当于创建游标

第五行相当于为游标循环填充循环数据

 

PS:其实此种情况也可以通过 APPLY运算符来实现,关于APPLY在sqlServer 2005帮助中的讲解如下:

使用 APPLY 运算符可以为实现查询 *** 作的外部表表达式返回的每个行调用表值函数。表值函数作为右输入,外部表表达式作为左输入。通过对右输入求值来获得左输入每一行的计算结果,生成的行被组合起来作为最终输出。APPLY 运算符生成的列的列表是左输入中的列集,后跟右输入返回的列的列表。 APPLY 有两种形式: CROSS APPLY OUTER APPLYCROSS APPLY 仅返回外部表中通过表值函数生成结果集的行。OUTER APPLY 既返回生成结果集的行,也返回不生成结果集的行,其中表值函数生成的列中的值为 NulL SELECT *FROM tableA AS A
 CROSS APPLY fn_getBbyA(A.primaryID) AS B
其中:
fn_getBbyA()表值函数 详细代码请看:http://www.soaspx.com/dotnet/sql/mssql/sql2005/sqlservr2005_20120421_8995.html
 

如有问题,请多多指教。

总结

以上是内存溢出为你收集整理的mssql 游标有感全部内容,希望文章能够帮你解决mssql 游标有感所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1151100.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存