下载此文档

存储过程中利用游标.docx


文档分类:IT计算机 | 页数:约4页 举报非法文档有奖
1/4
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/4 下载此文档
文档列表 文档介绍
《存储过程中利用游标》.docx用存储过程计算单井产量解决思路一、选择适当的参数首先,因为考虑到要查找某口井某天的产量,那么肯定就需要传入两个参数,因此,我在创建存储过程的时候首先创建了两个变量,一个为井号(***@WellIDint),另外一个为时间(***@DatetimeDateTime)二、整体思路在查询一口井的产量时存在两种情况,一种是恰好所查询的井在当天有记录,因此只需要根据输入给参数的值直接从数据库中读取即可;另一种是所查询的井在当天没有记录,这个时候需要利用近似公:S=a*(a+b+c)/m;S---------------A井的近似产量a,b,c-------分别为A,B,C井上一次的产量(最近一天记录的产量,不一定是连续的)m--------------这个平台在这一天的总产量(实际测量得到的),我们用sql语句可得到******@TmpWellProint--待查井的产量,如果没有就选最近日期的产量******@TmpWellPro=(selectWellProductfromT_WellRecordwhereWellID=***@WellIDandWellDate=***@Datetime)--,我们需要求出所查询的A井的产量,A井所在平台下所有井最近一次的产量,所在平台的产量。因此我们需要定义三个变量来存储这些值******@PlatformProint--所在井的平台的产量******@Wholeint--所在平台下的井的最近一次产量和******@TmpWellProint--待查井的产量,如果没有就选最近日期的产量对于所查询井A,如果没有值,我们就需要以最近一次的产量代替if(notexists(selectWellProductfromT_WellRecordwhereWellID=***@WellIDandWellDate=***@DatetimeandWellProductisnotnull))--如果当天无记录******@TmpWellPro=(selecttop1WellProductfromT_WellRecordwhereWellID=***@WellIDandWellDate<***@DatetimeandWellProductisnotnullorderbyWellDatedesc)--(以验证)接下来的难点是我们如何得到所查询井所在平台下的所有井的产量,显然我们先需要得到该平台下所有井的井号,然后根据井号得出每口井的产量,并相加。由于需要将每口井的产量循环求出来,我们这里需要运用到游标,游标给我们开辟一个数据的缓冲区,存放我们查询所在平台下所有井号的结果集,declareGetWholeProductionCURSORlocalFOR--定义游标selectWellIDfromT_WellwherePlatformID=(selectPlatformIDfromT_WellwhereWellID=***@WellID)--根据井号得到该平台号下面的所有井号然后可以用SQL语句逐一从游标中获取记录,并赋给主变量,交由主语言进一步处理将各个井号的产量相加的操作。OPENGetWholeProduction--打开游标FETCHNEXTFROMGetWholeProduction

存储过程中利用游标 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数4
  • 收藏数0 收藏
  • 顶次数0
  • 上传人yinjiong623147
  • 文件大小71 KB
  • 时间2016-09-27