WEB开发网
开发学院软件开发VC 数据库中存储过程的自动化生成 阅读

数据库中存储过程的自动化生成

 2006-07-23 11:17:31 来源:WEB开发网   
核心提示: 既然所有的存储过程都使用相同的元数据信息,那么出于模块化和可维护性考虑,数据库中存储过程的自动化生成(4),将其封装在独立的代码块中是件非常好的事情,SQL Server 的早期版本没有UDF(用户定义函数),对于主键元数据,我们已创建另外一个 UDF 来确定表中一列是否是某个表主键的一部

既然所有的存储过程都使用相同的元数据信息,那么出于模块化和可维护性考虑,将其封装在独立的代码块中是件非常好的事情。SQL Server 的早期版本没有UDF(用户定义函数),使得模块化看起来很困难。但是 SQL Server 2000 具备了 UDF 特性,我们决定进一步采用该代码并将四个设计时存储过程中的公共特性进行模块化。创建五个新的 UDFs 来处理系统表和信息大纲视图,封装所有取得的元数据。

毫无疑问,为了创建新的运行时存储过程,我们需要知道下面的关于表的元数据列信息:       

  • 列名
  • 列的ID号
  • 列的数据类型
  • 列最大长度(包括字符和二进制数据)
  • 列的精度,或者值的位数(decimal和numeric数据)
  • 列的数值范围,或者小数点后的位数(decimal和numeric数据)
  • 列是否允许为null
  • 列是否是主键的一部分         
  • 列是否是 Identity 列
  • 列的默认值

这些信息的大多数来自 syscolumns 表,只有两个除外。默认值实际上来自INFORMATION_SCHEMA.COLUMNS 视图。数据类型名(datatype name)从 systypes 表中吸取,并且通过一个更复杂的 syscolumns,sysindexes 和 sysindexkeys 表联合来确定一个列是否是主键的一部分。它是如此的复杂,以至于我们将该功能封装到其自己的 UDF 中。

让我们看一下 Figure 3 中的主要功能,它揭示了更多的元数据信息。这个 UDF 不是太复杂。正如你看到的,大多数元数据信息——除了一些简单的列重命名——被返回时未做任何修改,包括列名、列 ID、长度、精度、范围、是否允许为空和数据类型名字。接下来需要对这些信息做一点额外的工作。对于主键元数据,我们已创建另外一个 UDF 来确定表中一列是否是某个表主键的一部分。我们将马上检查这些额外的 UDFs 函数。 

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:数据库 存储 过程

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接