- 前言
在数据库应用程序的开发中,提供给用户功能多样的动态查询一直是一件不容易的事情。许多应用程序,要么只是提供了一些简单基本的查询,其中查询的结构和方式都是固定的,只是每次用户输入不同的参数,如QQ的查找好友;要么提供了类似于SQL语言生成器的复杂过程,如一些文献检索的网页的高级选项;这些实现的方式都有自己的长处和不足。第一种方法程序设计简单,使用容易,但功能有限。第二种方法功能强大,但操作复杂,大多数用户不容易、也不愿意使用,其功能也就没有达到预想的目的。 本文根据应用程序插件的思想,提出了一种利用存储过程执行动态查询的新方法,能够实现二者长处,并避免各自的缺点。
- 基本原理
首先,在数据库中多建立两个表,表的名称分别为AppProc和AppParam。AppProc用于存储供外部调用的存储过程的基本信息,AppParam用于存储AppProc中存储过程的参数信息。二者的结构设计如表1 表2所示。 表1AppProc
字段名称 |
类型 |
说明 |
ProcID |
Bigint |
主键 (自动增加的GUID) |
ProcName |
Varchar(50) |
存储过程的名称 数据库中要有该存储过程的实现 |
DispName |
Varchar(50) |
外部应用程序调用时显示给用户的名称 |
HasRet |
Bite |
该存储过程是否返回结果 0不返回 1 返回 |
表2AppParam
字段名称 |
类型 |
说明 |
ParamID |
bigint |
主键 (自动增加的GUID) |
ProcID |
int |
外键 指向标AppProc |
ParamName |
Varchar(50) |
参数名称 |
DispName |
Varchar(50) |
该参数显示给用户时所显示的文字 | 这样就建好了供外部调用的两个表。数据库开发人员可以随时开发用户需要的实现某些查询功能的存储过程,测试后,只要按上述两个表内容填写即可。其中关键的是AppProc .ProcName和AppParam中同一个ProcID的不同ParamID行的个数(下面将会看到),当应用程序的查询模块启动时,将这两表的内容读取到指定的显示方式上。经过代码的维护保证,就可以实现类似于插方式的查询操作。这样数据库开发人员可以根据用户查询需要的变化添加、删除、修改存储过程供应用程序调用,再由应用程序友好显示处理后提供给用户。
......................................(作者:于海滨? 邓小娣)
|