
图3 SQL映射执行效果:SP_map将列表中的每一个表名映射到了SELECT模板表达式中,并使用分开的结果集返回
下面是我们需要做实现的SQL代码:
EXEC SP_map
@StmtTemplate = 'select count(*) as Rows from <MAIN_ARG>',
@MainArray = 'Person.Address, Person.Contact,
Production.Culture, Sales.Customer', @Verbose = 1
在上面代码中加入@Verbose标志是为了这个存储过程也可以使用如下的表达式:
select count(*) as Rows from Person.Address
select count(*) as Rows from Person.Contact
select count(*) as Rows from Production.Culture
select count(*) as Rows from Sales.Customer
注意:如果我们没有AdventureWorks数据库,可以使用从任何数据库获得的表名。
@StmtTemplate除了使用标号< MAIN_ARG>是一个标准的DML表达式,这个标号是一个占位符来替换我们的输入列表中的每一个元素。
我们大家都知道,SQL并没有数组列表的概念。因此,SP-map通过了一个单独的字符串参(中间由逗号将元素分开)来模拟一个数组。由于这些代码是直接写在程序中的,因此,属于常量列表。