T―SQL在查找文献财产号缺号区域中的应用探讨.docVIP

  • 1
  • 0
  • 约 7页
  • 2016-09-10 发布于北京
  • 举报

T―SQL在查找文献财产号缺号区域中的应用探讨.doc

T―SQL在查找文献财产号缺号区域中的应用探讨.doc

T―SQL在查找文献财产号缺号区域中的应用探讨   摘 要:文献财产号是图书管理的基础之一,财产号缺号区域的存在往往给财产号的管理带来不少问题,如财产号位数溢出、财产号不连续。文章探讨了在SQL-server中使用T-SQL语言实现了一个查询文献财产号缺号区域的程序。该程序有利于管理人员及时的了解财产号的状态,更加灵活的分配和注销财产号,便于维护文献财产号的正确性和连续性。   关键词:文献财产号;缺号区域;T-SQl;查找   中图分类号:G250.7   文献财产号――简称财产号,指图书的财产登记号,也称“流水号”,是图书情报机构按文献到馆先后顺序登记的号码。它的主要作用是标示固定财产,以便进行财产登记、管理和清查,文献馆藏量的控制,是文献财产有效管理的基础和依据,在资产管理和借阅流通管理方面都具有非常重要的意义[1]。财产号一般有两部份组成:分段号+顺序号。分段号可以包含不同区域的代码、文献类型的代码、语种代码等,而顺序号是图书所在段内的识别号,具有唯一性。财产号的管理是为了确保财产号在使用过程中的正确性、唯一性、有序性、连续性和一致性[2]。手动输入财产号的时候,容易出错,如在纯数字的财产号里出现了字母,就会影响到财产号的连续性和一致性。如果财产号缺号区域较多且零散,最大财产号就不能正确的反应馆藏图书量,致使财产号的使用存在浪费,如我们馆的最大的财产号为3944450(不包含分段号),而实际的馆藏量才26万册,这样严重影响到财产号功能的发挥,破坏了财产号的连续性。   Microsoft SQL Server在中小型图书馆中应用广泛,T-SQL语言是各种应用程序与SQL server数据通信的基本语言[3]。本文使用T-SQL实现财产号缺号区域的自动查找,查询结果存储在数据库表格中,有利于管理人员及时了解财产号的组成状态,更加灵活的分配和注销财产号,便与将同一馆内的多个不连续的财产号字段组成一段连续财产号。   1 程序设计   财产号的格式一般都要根据本馆的具体情况来设置,纯数字性质的财产号在使用上存在缺陷[2],在实际中我们图书馆使用的是文本性质的数字来表示财产号,基于此,本系统使用的财产号格式要求为:(1)财产号长度固定,长度不足补“0”,以文本格式存储在数据库中;(2)财产号由两部分组成:分段号+顺序号,分段号可以是数字、字母,同一段内的分段号都是相同的,顺序号是唯一的。   为了查询同一段号内的财产号中的缺号区域,需要先将同一段内的财产号集中在一起,在对同一段内的财产号排序,在整数值上不连续的两个财产号中间即为一个财产号缺号区域。查找财产号缺号区域的步骤如下:(1)从数据库中读取财产号(按降序读取);(2)通过截取财产号中的段号,将段号相同的财产号放在一起处理;(3)截取顺序号,转换成数值格式,判断前后两个财产号中间是否存在缺号区域;(4)将查出财产号缺号区域的起止财产号存储到数据表中,以供检索。   查找财产号缺号区域的算法设计流程图如下:   图1 查找财产号缺号区域及连续区域的算法流程图   算法实现:   本程序在SQL Server 2008集成环境中实现,核心代码如下:   while(@@FETCH_STATUS=0)   /*判断是否读取是否结束*/   begin   fetch next from curids into @temp1   if(not rtrim(right(@temp1,50-@fieldDigit)) like %[^0-9]% and LEN(@temp1)=@barDigit)   /*排除非法的顺序号,如包含非数字字符,位数不足,@fieldDigit为段符号位数,@barDigit为财产号位数*/   begin   if(@fieldDigit=0 or left(@temp1,@fieldDigit)=LEFT(@temp2,@fieldDigit))   /*判断是否前后两个财产号是否在同一区域段内*/   begin   if convert(bigint,right(@temp1,50-@fieldDigit))-1   convert(bigint,right(@temp2,50-@fieldDigit))   /*如果存在财产号缺号区域则存储到基本表中*/   begin   set @StartBar=@temp3   set @EndBar=@temp2   set @s=convert(bigint,right(@EndBar,50-@fieldDigit))   -convert(bigint,right(@StartBar,50-@fieldDigit))+1   s

文档评论(0)

1亿VIP精品文档

相关文档