在转换过程中出现的最大问题是在于列表数据的处理。在程序中有很多检查框,信息表,或者是很多行条款。而且,我们必须通过使用ColdFusion来分离每一行条款并独立地处理,这就意味着,如果有10行条款,就需要建立10个ColdFusion服务器与数据库的ODBC连接,同时需要10个存储程序来处理每一行条款。这就大大地破坏了程序的完整性。如果有一行条款被处理失败,我们必须知道失败的原因并调用一些函数来处理。而在服务器上处理列表的过程意味着程序很不安全。在ColdFusion中处理列表数据的一个方法是,使用cfloop来调用存储函数myStoredProc来循环处理每一行条款,如表A所示。
基于以上的缺点,我列出以下能够解决问题的方法:
第一种方法的目的就是能够从网络程序服务器取出选项列表而作为一条选项来处理。为了达到这一目的,我们必须建立SQL存储程序来处理单一选项。但这一方法会导致潜在的操作失败。
第二种方法是在网络程序服务器上建立动态的SQL WHERE语句并在一个存储程序中执行。一、使用'adam','bob,'rita'来处理数据列表;二、传递@mylist参数到存储程序并通过WHERE语句来查找每一条选项。
第三种方法,既然SQL服务器支持用户自定义功能,我们可以建立这样一个过程,当传递一个字符串时,将会调用带有PATINDEX功能的WHILE循环来查找每一条选项,并显示每一条选项的位置。
在这里我决定采用第三条选项来解决问题,这一条选项包含了用户自定义功能和可重新使用功能,所以能减少网络程序服务器工作的次数。表B中的源代码建立了SQL服务器2000的用户自定义fn_ListToTable函数,当传递一列表时,这一函数会返回具有两列的一个表格。