在许多网页上,用户都可以通过简单地选择列表中的一项来输入一个国家或州的名字,在大多数情况下,我们通常使用ASP来生成这个列表,创建生成这个列表的函数并把它们保存在一个Include文件中。然而,ASP需要额外的时间在服务器上加载并处理这些Include文件,此外,每次生成一个选择列表时,服务器都必须加载整个Include文件。
在最近为一个客户建立网站时,我有了一个新的想法,把这些函数放在存储过程而不是Include文件中,让存储过程来生成选择清单。下面的代码将生成一个选择清单的记录。
首先,使用T-SQL的串联功能建立一个从记录集中生成选择清单的Select语句:
Alter Procedure "getOptionListStates"
As
select ('
+ rtrim( FullName) + ')
as OptionList from states
执行getOptionListStates存储过程可以生成下面的记录:
North Carolina
South Carolina
Washington
Virginia
当然,还可以直接把选择列表放在数据库中。
接下来可以修改存储过程返回一个包含全部选择列表元素的单一变量,然后把这一变量返回给HTML的Select语句即可。
虽然没有详细地比较使用存储过程和ASP这两种方法之间在性能上的差异,但我发现使用存储过程这种技术最有趣的地方是可以使用SQL Server自动地生成一部分以前我们需要在ASP中完成的HTML代码,采用这种混合方式生成ASP代码在性能和灵活性上要优于纯ASP代码。例如,一旦建立了一个存储过程,就可以很方便地在不同的应用中进行调用,甚至是在不同服务器上的应用中进行调用,如果把所有的代码都放在Include文件中要做到这一点是很困难的。