豳重昌番疆 强目 201 1年第 1 0卷第 5期
高校科研信息管理系统开发中
动态 SQL语句的应用与探讨
口蒋红军 吕圣林
【摘 要】在系统开发 中,存储过程的大量使用为后期的维护带来诸多的不便。动态 SQL语句不仅能优化存储过程,而且能完
成静 态 SQL语 句无法实现 的功能。本文以我院科研 信息管理 系统 项 目开发为例 ,探 讨动 态 SQL语 句在项 目开发 中
的 应 用 。
【关键词】动态SQL;存储过程;管理系统
【基金项目】本文为广西农业职业技术学院 自然科学研究项 目“基于.NET高职学院科研管理信息 系统的研发(桂农职 院研
[2010]9号 )”部分研究成果 。
【作者单位 】蒋红军,吕圣林;广西农业职业技术学院
科研管理信息系统是高校信息化建设的重要组成部门,
科研管理信息系统的核心包括科研成果的管理、科研项 目的
计分等。 目前许多高校的科研信息管理工作还停留在手工
或半 手工的阶段 ,效率低且错误 率高,因此开发一种快速、安
全 、简单 的科 研信息管理系统势 在必行 。本文将 以我院科 研
管理系统开发 为例 ,介 绍 动态 SQL语 句 的应用 ,以提高 项目
开 发效率 。
一
、 科研管理信息系统系统设计
科研成果管理模块是科研信息管理系统中的一个模块 ,
根据 业务需求 ,将科 研成 果管理系 统分 为成果登 记管 理 、成
果审核管理及成果汇总查询 3个 子系统 ,每个子 系统又 需要
按照科研成果 类别包含 了若 干个子功 能模 块。每个 子模块
都对应相应 的角色和权 限,如成果 登记管理模块 可 以给 一般
用户对成果信息进 行添加 、修改 、查看等功能 。
二 、静态 SQL和动态 SQL语句简介
(一)静 态SQL语句。静态 的 SQL语句 是在编 写程序时
要定义所有的 SQL语句 ,如 Insert、Update等普 通的 SQL语
句,静态 SQL语句每次被调用时,都是 固定不变的。静态
SQL功 能简单 、易实现 ,但是 通用性和扩展性 差 ,也不能 实现
复杂 的应用功 能。
(二)动 态SQL语句。动态 SQL的特性为 :语句 的说明和
执行为两步。第一步,PREPARE语句用于分析 SQL语句,并
且在必要 时建立 一个程序计划;第 二步 ,用 EXECUTE或定义
游标来执行被 预备好 的 SQL语句。这样一旦 一条 SQL语句
经过预备处理后 ,就可重复执行多 次。
当和存储过程一起使用时,动态 SQL执行可以使存储过
程根据传递给它的不同参数执行不同的 SQL语句。用户可
以使用动态执行 ,例如简单地通过改变传递给存储过程的参
数取值 ,来选择 出数据库 中任何表 的所有字段。
三、系统开发 中动态 SQL语句应 用举例
在我院科研信息管理系统开发中,采用典型的三层架构
Industrial&Science Tribune巨田圈
模式,即:数据层、逻辑层和数据层。在数据层的存储过程设
计中,系统采用了大量的动态 SQL语句,实现了更为复杂的
数据处理功能 ,同时 也缩 减了存 储过程 的数量 ,为系统 的维
护和再开发提供 了便利 。下面将 以实 际项 目开发为例 ,从数
据的检索 、添加 、更新 、删除等 方面介 绍动态 SQL语 句的使
用 。
(一)从成果信 息表 中按条 件检 索数据。鉴 于科 研 成果
类型不 同,在数据库中需要存储 的字 段 也不 尽相 同,需 要针
对各种类型的科研成果分别建表存储。在传统的静态 SQL
语句 中,对每个的表 的检索需 要一条独 立的 SQL语 句,如果
使用存储过程 ,成果信息表有多少张,对应的存储过程就需
要多少个 。
【静态 SQL语句】
Create proc Up_se1
— Tablel(@keyid int)as Select from
Tablel where keyid=@ keyid:
【动态 SQL语句】
Create proc Up
—
Sel
—
Table
— Key(@ keyValue int,@ table
nvarchar(10o))As Declare@sql nvarchar(max);Set@sql=
‘
select ¥ from ’Select@ sql = @ sql + @ table + ‘where
keyid = ’+ @keyValue;Exec(@sq1);
在存 储过程中使用动态的 SQL语 句可以按照执行 时传
输 的 表 名 动 态 的 进 行 查 询 ,如 :Exec Up—Sel—Table—Key
‘100’,‘Table1’。则 可查询表 table1中 keyid字段值 为 100
的记 录。
(二)删 除表 中满足一定条件的记 录。系统 开发 中 ,需要
对数据表按照字段的值做动态的删除处理,在静态 SQL中只
能预先指定需要删 除记 录的表名 及字段 ,不 能根据 用户选择
做动态 的处理 。
【静态 SQL语句】
Create proc Up DeI
_
Tab le1
一
ForKey(@keyid int)as delete
Tablel where keyid=@ keyid:
·
97·
评论0
最新资源