当我们浏览SQL Server 2008的新特性的时候,我们发现一个很有趣的特性叫做表值参数(Table-Valued Parameter)。你能否给我们详细介绍一下我们可以如何利用这个新特性吗?
专家解答:
表值参数确实是SQL Server 2008的一个新特性。顾名思义,表值参数表示你可以把一个表类型作为参数传递到函数或存储过程里。更高级的功能方面,表值参数的功能可以允许你向被声明为T-SQL变量的表中导入数据,然后把该表作为一个参数传递到存储过程或函数中去。表值参数的优点在于你可以向存储过程或函数发送多行数据,而无需向以前那样必须声明多个参数或者使用XML参数类型来处理多行数据。据说,表值参数可以处理多达1000行数据。
我们在这里将会介绍表值参数,并举一些简单的编码例子来演示如何通过使用表值参数来完成以下任务:
创建可以作为表值参数传递到函数或存储过程的表类型
创建使用表值参数的存储过程
声明表类型,向该表导入数据,并把它传递到存储过程里
在数据仓库应用程序里的数据加载过程,我们一般会在维度处理过程中把源系统键对应到代理键;然后使用代理键来识别数据仓库中的维度行。这样对维度行进行的每一个改动都会存储在一行带有新代理键的新行中,我们就可以保存维度行的完整历史记录。当对维度行进行改动或添加新行时,我们只需要给源系统键添加一个新的代理键并在维度表里插入新的一行就可以了。在处理事实行(fact rows)时,我们查找代理键并将其存储在事实表中。查询通过代理键连接事实表和维度表。由于多个事实表通常会索引至同一个维度(例如Customer),代理键查找功能可以给我们提供一个使用表值参数的很好的例子。我们可以在存储过程中执行一次代理键查找,然后在多个事实表的数据载入过程中调用这个代理键查找。
新闻热点
疑难解答