在SQL Server2005中实现数组映射(三)
九、SP_map的存储过程API
到现在为止我们已经看到SP_map可以做什么了,在这一节我们给出一个关于SP_map的参数列表:
SP_map @StmtTemplate, @MainArray, @AuxArray,
@Permute, @Verbose, @Process
表1提供了SP_map的参数详细的描述
|
参数
|
数据类型
|
默认
|
描述
|
|
@StmtTemplate
|
nvarchar 2048
|
n-one
|
表示一个DML表达式(如SELECT、INSERT、DBCC等),这些表达式将被映射成表的集合或是其他的值。@StmtTemplate应该包含占位符<MAIN_ARG>和<AUX_ARG>。
|
|
@MainArray
|
nvarchar 2048
|
none
|
@MainArray可以是逗号分割的字符串列表,或是一个可以返回一个单独的结果集的SELECT表达式。每一项最多包含128的字符。
|
|
@AuxArray
|
nvarchar 2048
|
null
|
@AuxArray和@MainArray的格式类似。它也可以是由逗号分隔的字符串或是一个返回一个拥有一列的结果集。如果@AuxArray为空,<AUX_ARG>占位符不会在@StmtTemplate中描述
|
|
@Permute
|
bit
|
0
|
如果打开这个开关,那么<MAIN_ARG>和<AUX_ARG>的所有组合将被计算。如果关闭这个开关,那么@MainArray和@AuxArray必须有同样的结构。
|
|
@Accumulate
|
bit
|
0
|
这个参数为了返回多个结果集而设定,SP_map通过默认值返回一个被分割的结果集。通过设置@Accumulate标志可以代替将多个结果集聚合在单独的结果集中。
|
|
@AccumulateFilter
|
nvarchar 2048
|
null
|
当我们将多个结果集聚合在一个单独的结果集中时,这个结果集被存储在一个临时表中。由SP_map产生的语句序列以一个简单的SELECT * FROM #temp_table结尾。
|
|
@Process
|
bit
|
1
|
为了查看被产生的SQL页不执行它们,可@Process为0.这是非常有用的。然而,我们必须还设置@Verbose为一个非0的值。否则,不仅不会被执行,而且什么都不会输出。
|
0
相关文章