ASP存储过程在开发中的应用分析。
需求:用于实现省市区三级下拉菜单(简化过程,提高重用)<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
目的:省全部显示,市根据省ID进行显示,区根据省,市ID进行显示
使用SQL实现:组合SQL的过程
使用存储过程实现:<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />
2 @Userid int
3AS
4BEGIN
5 SELECT U.UserName,U.PostCode,U.Homepage,Content,U.BirthDay,F.School,F.SchoolAge,F.DiplId,F.TechId,
6 (SELECT DepName FROM DicDep WHERE DepID = U.DepID) AS DepName,--部门
7 (SELECT TechName FROM DicTech WHERE TechID = F.TechID) AS TechName, --科室
8 (SELECT UnitName FROM DicUnit WHERE UnitID = U.UnitID) AS UnitName, --单位
9 FROM UserAdmin AS U LEFT OUTER JOIN FamousDoc AS F ON U.Userid = F.UserID
10WHERE U.UserID = @Userid
11END
12
调用存储过程性质:有参数,返回记录集,无需分页
调用过程:
省下拉列表:rsa.open "exec ProvCityBorough",conn,1
市下拉列表:rsa.open "EXEC ProvCityBorough" & sProvId,conn,1
区下拉列表:rsa.open "EXEC ProvCityBorough "&sProvId & sCityID,conn,1 这段代码调用时没有结果(为什么)
需求:显示医生的个人信息(减少对数据库I/O的次数)
目的:医生的信息
使用SQL实现:
需要通过用户类型ID查询出用户类型为医生
通过单位ID查询单位名称及科室
通过用户的专科ID查询出专科名称
通过用户的职称ID查询出职称名称
使用存储过程实现:
2 @ProvID INT = 0 ,@CityID INT = 0
3AS
4SET NOCOUNT ON
5BEGIN
6 IF @ProvID = 0 and @CityID = 0
7 SELECT * FROM DicProvince ORDER BY rovid
8 ELSE IF @CityID > 0 --先比较市ID,再进行比较省ID(为什么)
9
10 SELECT * FROM DicBorough where ProvID = ProvID AND CityID=@CityID
11ORDER BY BoroID
12 ELSE IF @ProvID > 0
13 SELECT * FROM DicCity WHERE ProvID = @ProvID ORDER BY Cityid
14END
15--调用示例
16--EXEC ProvCityBorough 10,83
17
18
19
调用存储过程性质:有输入参数,有记录集,但无需分页,可用rs.open 调用
调用过程:rs.open "EXEC PMyInfo "&iUserId,conn,1
需求:注册时用户是否存在验证(对查询进行预编译,提高查询效率)
目的:接收用户名验证用户是否存在
使用SQL实现:
接收用户名,组合SQL语句,进行查询数据库
如果记录集的条数等1则提示出错返回,否则继续进行操作
存储过程代码:
2 @UserName VARCHAR(20),@Pwd VARCHAR(50),@Email VARCHAR(50)
3AS
4 SET NOCOUNT ON
5BEGIN
6 SELECT UserName FROM UserAdmin WHERE UserName = @UserName
7 IF @@rowcount > 0 --(@@rowcount的作用)
8 RETURN 1
9 ELSE
10 BEGIN
11 INSERT INTO(…) VALUES(…)
12 RETURN 0
13 END
14END
15
16
调用存储过程性质:有参数,有返回值
调用过程:
2 with Comm
3 .ActiveConnection = Conn
4 .CommandText = "PCheckUser" .CommandType = 4 .Prepared = true
5 .Parameters.Append .CreateParameter("RETURN",2,4) --返回值参数的设置(放在第一位)
6 .Parameters.Append .CreateParameter("@UserName",200,1,50,syhm)
7 .Parameters.Append .CreateParameter("@Pwd",200,1,50,spwd)
8 .Execute
9 end with
10 if Comm(0) = 1 then --调用返回值
11 response.write "<script languge='javascript'>alert('您填写的帐号已占用!请返回重新填写.'); </script>"
12 end if
13%>
需求:用户注册信息配置(封装业务逻辑)
目的:用户注册对个人相关的信息进行配置
使用SQL实现:
1.如果通过重复性验证,通过刚刚注册的用户名,查询出用户ID
2.将个人网站的布局和样式查出来 -- 插入到个人空间表中
3.将个人类别的公用栏目信息插到注册用户的栏目中
4.将属于个人类别的
存储过程代码:
2 @UserName Varchar(20)
3AS
4 SET NOCOUNT ON
5 DECLARE @UserId BIGINT
6BEGIN
7 BEGIN TRANSACTION
8--1.如果注册成功,根据注册的用户名,查找出用户ID
9 SELECT @UserId = UserId FROM UserAdmin WHERE UserName = @UserName
10 DECLARE @Spaceid BIGINT,@Cssid BIGINT --定义中转变量
11 DECLARE@LogoUrl NVARCHAR(100) --定义中转变量
12
13--2.将个人网站的第一种布局及第一种布局的第一种样式查找出来,插入到个人空间中
14 SELECTTOP1@Spaceid=Spaceid FROM DicSpace WHERE typeid = 2
15 SELECT TOP 1 @CssID = Cssid FROM DicCss WHERE Spaceid = 9
16--3.将查询的信息插入到个人空间的表中()
17 INSERT INTO UserSpace(…)
18 VALUES(@UserId,@Spaceid,@PreviewUrl,'嘿嘿,我也有自己的网站了',@UserName)
19--4.将属于个人类别的公用的栏目信息插到这个注册用户的栏目中
20 INSERT INTO dictype(UserID,TypeName,TypeClass)
21 SELECT @UserId,TypeName,0 FROM dictypepub WHERE userlevelid=10
22--5.将属于个人类别的公用相册夹插入到这个注册用户的相册类别中
23 INSERT INTO MyPicFolder SELECT @UserId,
24 FROM DicFolderPub WHERE UserLevelId=10
25--错误处理
26 IF @@ERROR <> 0
27 BEGIN
28 ROLLBACK TRANSACTION
29 RETURN 1
30 END
31 ELSE
32 BEGIN
33 COMMIT TRANSACTION
34 RETURN @UserId
35 END
36END
调用存储过程性质:有输入参数,有返回值,无返回记录集
调用过程
2 Set Comm = Server.CreateObject("ADODB.Command")
3 with Comm
4 .ActiveConnection = Conn
5 .CommandText = "PRegUser"
6 .CommandType = 4
7 .Prepared = true
8 .Parameters.Append .CreateParameter("RETURN",20,4)
9 .Parameters.Append .CreateParameter("@UserName",200,1,50,syhm)
10 .Execute
11 end with
12 if Comm(0) > 1 then
13 iUserId = Comm(0) ‘返回用户ID
14 else
15 response.write "<script languge='javascript'>alert('用户注册失败!请返回重新注册.');history.go(-1);</script>"
16 response.end()
17end if
需求:更改用户类型的单位选择(多条件查数化查询)
目的:根据选择的省,市,区或是选择的条件进行查询医院单位,并可以进行分页
使用SQL实现:
1. 进入页面,未选择任何条件,显示医院的总数
2. 按省,市,区输入的内容进行条件筛选.在选择不同的省市区时即时显示医院的内容
3. 输入的医院名称进行查询
存储过程实现:
2--输入参数:省,市,区ID,页码,单位名称查询关键字
3--输 出:没有条件时返回单位的总数;有条件是查询单位的个数及单位的名称
4CREATE PROC PChooseUnit
5 @ProvID varchar(20),@CityID varchar(20),@BoroId varchar(20),
6 @iPage int,@UnitName nvarchar(50),@UnitLevelID varchar(4)
7AS
8 SET NOCOUNT ON
9BEGIN
10 DECLARE @sqlh varchar(300), @sql varchar(300)
11 SET @sqlh = 'SELECT COUNT(*) as Counts FROM DicUnit
12 SET @sql = ' WHERE UnitTypeID =' + @UnitLevelID --根据条件进行拼合SQL
13 if @ProvId > 0 SET @sql = @sql + ' and ProvId=' + @ProvId
14 if @CityId > 0 SET @sql = @sql + ' and CityId=' + @CityId
15 if @BoroId > 0 SET @sql = @sql + ' and BoroId=' + @BoroId
16 if @UnitName <> '' SET @sql = @sql + ' and UnitName like ' + '''' + '%' + @UnitName + '%'+ ''''
17--如果没有条件,则查询出单位的总个数并进行返回
18--PRINT @sqlh + @sql
19 EXEC (@sqlh+@sql) ‘查询出记录的条数
20 IF @ProvId = 0 AND @BoroId = 0 AND @BoroId = 0 AND @UnitName = ''
21 BEGIN
22 RETURN 1 --表示没有条件返回
23 END
24-- SQL语句拆分为三段此为第一段
25 SET @sqlh='SELECT UnitID,UserID,UnitName,Clicks FROM
26(SELECT TOP 10 UnitID,UserID,UnitName,Clicks FROM (SELECT TOP'+convert(varchar(30),10*@iPage) +' UnitID,UserID,UnitName,Clicks
27FROM dicunit
28 DECLARE @sqlb varchar(300)
29-- SQL语句拆分为三段此为第三段
30 SET @sqlb = ' ORDER BY Clicks desc) a ORDER BY Clicks)
31 DERIVEDTBL ORDER BY Clicks desc '
32 SET @sql = @sqlh + @sql + @sqlb
33--PRINT @SQL
34EXEC (@sql)
35
36 RETURN 0 --表示有条件返回
37
38END
39
40--调用示例
41
42--调用格式:存储过程名,省ID,市ID,区ID,页码,医院名称,单位类型
43
44--医院ID为1 器械商单位ID为2 药商单位ID为3 软件单位ID为4
45
46--EXEC PChooseUnit '17', 0,0,3,'',4
47
48
调用存储过程性质:有输入参数,返回值,有多个记录集的存储过程
调用过程
2 set Comm = server.createobject("adodb.command")
3 iUnitLevelID = 1
4 with Comm
5 .ActiveConnection = conn
6 .CommandText = "PChooseUnit" '指定存储过程名
7 .CommandType = 4 '表明这是一个存储过程
8 .Prepared = true '要求将SQL命令先行编译
9 .Parameters.append .CreateParameter("return",2,4) '返回值
10 .Parameters.append .CreateParameter("@ProvID",200,1,20,sProvId) '字符串参数
11 .Parameters.append .CreateParameter("@CityID",200,1,20,sCityID)
12 .Parameters.append .CreateParameter("@BoroId",200,1,20,sBoroId)
13 .Parameters.append .CreateParameter("@iPage",3,1,4,iPage) '整型值参数
14 .Parameters.append .CreateParameter("@UnitName",200,1,50,sKey)
15 .Parameters.append .CreateParameter("@UnitLevelID",200,1,4,iUnitLevelID)
16 Set rs = .Execute
17end with
18 iCounts = rs("Counts") ‘返回的记录总条数
19 rs.close ‘要关闭记录集,然后才能使用返回值的属性
20 if comm(0) = 1 then
21 response.write "<tr><td> </td><td>共有"&iCounts&"家医疗单位。</td></tr>"
22 else
23 rs.open
24 Set rs = rs.NextRecordset() ‘应用下个记录集
25 href="ChooseHosp.asp"
26 iPages=iCounts\10 if iCounts mod 10 >0 then iPages=iPages+1
27 if iPage>iPages then iPage=iPages
28 if not rs.eof and not rs.bof then
29 while not rs.eof
30 response.write "<tr><td>rs("UnitName")</td></tr>"
31 if rs("UserId")>0 then
32 wend
33 end if %>
转载于:https://www.cnblogs.com/nyxuwen/archive/2006/12/01/579243.html
ASP存储过程在开发中的应用分析。相关推荐
- ASP.net mvc开发中使用纯html如何创建FCKeditor编辑器的使用
http://www.cnblogs.com/esshs/archive/2008/12/03/1346326.html FCKeditor下载路径: http://sourceforge.net/p ...
- 信息系统开发中用户需求调研分析方法例解
信息系统开发中用户需求调研分析方法例解 陈书勤 结构化生命周期法是最常用的管理信息系统开发方法,分为四个步骤,即系统调研分析.数据库设计实现.界面设计实现和系统功能设计实现.其中系统调研分析阶段是最基 ...
- ASP.NET MVC开发中常见异常及解决方案
NHibernate:no persister for 异常 1.配置文件后缀名写错 mapping file 必须是.hbm.xml结尾 2.Web.config配置里面引用实体 <sessi ...
- ASP动态网页开发中的WEB打印代码大全
这篇文章主要介绍了如何使用ASP控制Web的各种打印效果,它能够控制纵打.横打和页面边距等. 1.控制"纵打". "横打"和"页面的边距". ...
- ASP.NET Web开发中Repeater控件的使用
在ASP.NET中数据绑定是其提供的访问数据库的方法,数据控件则是用来显示从数据库中获取的数据. 首先讲下待会要用到的属性和方法: DataBind():显示绑定的数据 DataSource:指定数据 ...
- ASP.NET的五大数据控件分析
ASP.NET 数据控件:GridView,DataList,Repeater ,DetailsView,FormView. ASP.NET 数据控件综述: 1.前3个用于呈现多条记录,后面2个用于呈 ...
- java web开发常见问题_javaWeb开发中常见的问题
1.修改表单提交的时候不好使可能是因为没写对应隐藏域的ID 2.el表达式在js代码中要加"",例如 "${}" 3.JavaScript中的函数也有重载的特性 ...
- hm编码工具使用_HM中字典编码分析
LZ77算法基本过程http://jpkc.zust.edu.cn/2007/dmt/course/MMT03_05_2.htm 输入待字典编码的CU, CopyCuFromPicYuv444(pcP ...
- android+显示html内容居中显示图片,Android开发中对HTML内容的显示
摘 要 随着Android科技的发展,手机客户端接受了更多的HTML内容.本文作者采用WebView直接显示法结合人机 >> Android开发中的主题设置研究 线程在Android开发中 ...
- 微信php开发用户分组,asp.net微信开发用户分组管理的示例代码
这篇文章主要介绍了asp.net微信开发中有关用户分组管理的相关内容,需要的朋友可以参考下 上一篇已讲解到新建用户分组,移动用户到分组的功能,这一章主要讲解修改分组名称和删除分组 直接上代码,废话不多 ...
最新文章
- 目前MPLS有哪些备份方案?
- Visual C++6.0安装教程(win10版)及“应用程序无法正常启动(0x0150002)”解决办法
- 系统架构师学习笔记-数据通信与计算机网络(二)
- Filter过滤器~~~编码过滤和登陆验证
- DSB2017第一名代码尝试运行(记录自用)(二)
- 深度学习模型提升模型效果的常见方法
- 只有程序员能看懂的十个笑话 2014-08-05 16:07 54人阅读 评论(0) 收藏...
- 一加6体验深度测评:一款性价比极高的旗舰
- 操作系统常见面试总结
- 西瓜书学习笔记(2)——模型评估与选择
- 吐血总结:国内外App制作平台大集合,总有一款适合你
- 专访 PMC,开源项目 Apache Pulsar 如何挑战 Kafka?
- Jira使用简介 HP ALM使用简介
- nginx配置Router
- halcon学习拓展系列—《halcon精髓之坐标系仿射篇》
- 想运行游戏,在Pycharm中安装Pygame库一直报错,我只是忽视了它
- python3视频教程推荐_《Python3从入门到放弃》视频教程
- 微博数据采集API 附咨询公司微博大数据分析实例
- 【Java面试】并发编程实战(线程控制操作详解)
- 高等数学习题笔记(三)