存储过程及ASP调用存储过程实现分页(五)
另:关于ASP调用存储过程参数简写的问题:ASP调用存储过程可以使用with 命令来简写代码。比如本例中:
……
set cmd = Server.CreateObject("ADODB.Command")
cmd.ActiveConnection = connstr
cmd.CommandText = "dbo.testPROC3"
cmd.CommandType = 4
cmd.CommandTimeout = 0
cmd.Prepared = true
cmd.Parameters.Append cmd.CreateParameter("@tRecordCount", 3, 4)
cmd.Parameters.Append cmd.CreateParameter("@tPageCount", 3, 2)
cmd.Parameters.Append cmd.CreateParameter("@tPageSize", 3, 1,10,tPageSize)
cmd.Parameters.Append cmd.CreateParameter("@PageNo", 3, 1,10,PageNo)
set rs=cmd.Execute()
rs.close()
……
这些代码可以用with命令来简化为:
……
set cmd = Server.CreateObject("ADODB.Command")
with cmd
.ActiveConnection = connstr
.CommandText = "dbo.testPROC3"
.CommandType = 4
.CommandTimeout = 0
.Prepared = true
.Parameters.Append .CreateParameter("@tRecordCount", 3, 4)
.Parameters.Append .CreateParameter("@tPageCount", 3, 2)
.Parameters.Append .CreateParameter("@tPageSize", 3, 1,10,tPageSize)
.Parameters.Append .CreateParameter("@PageNo", 3, 1,10,PageNo)
set rs=.Execute()end with
rs.close()
…..
运行的结果一样。看个人喜欢自行选择。
到了这里你也许还觉得这个存储过程不够完美,要是多个搜索功能然后再分页那就好多好了。呵呵。有的,请到我的百度空间去:http://hi.baidu.com/cool_web,具体地址:
http://hi.baidu.com/cool%5Fweb/b ... 49ee3bb80e2dee.html
这里我就不讲了,但 有个问题有说下对于搜索的要注意SQL搜索语句的优化(将在本文最后讲)如索引。有什么问题再跟我联系:QQ:40623660。要注意的一点就是在ASP页面里在显示数据后有这么一行set rs = rs.NextRecordset 。这行就是接下来要说的第4个例子,也就是返回多个记录集的存储过程。
4、返回多个记录集合的存储过程
在应用中有时候存储过程要用到多个表或返回多个记录集的情况下,在不知道如何获取
①/*=======第4个存储过程=====
这个存储过程比较简单主要是说明怎么读取多个记录集的问题。
注意:记录集的要按顺序来读取。不能跳着读取。
======================*/
USE johnny
go
CREATE PROC testPROC4
AS
SET NOCOUNT ON
BEGIN
SELECT uName FROM testUser
SELECT uEmail FROM testUser
SELECT uQQ FROM testUser
END
②ASP页面:在输入连接数据库字符串后再加入下面的代码
dim cmd
set cmd = Server.CreateObject("ADODB.Command")
cmd.ActiveConnection = connstr ' connstr是连接字符串
cmd.CommandText = "dbo.testPROC4"
cmd.CommandType = 4
cmd.CommandTimeout = 0
cmd.Prepared = true
set rs=cmd.Execute()
set cmd=nothing
'显示记录
response.Write("下面是第1个显示用户名记录集的信息:<br />")
while not rs.eof
response.Write("<li>"&rs("uName")&"</li><hr />"&VbCrlf)
rs.movenext
wend
response.Write("下面是第2个显示EMAIL记录集的信息:<br />")
set rs=rs.Nextrecordset '当你要显示第2个
while not rs.eof
response.Write("<li>"&rs("uEmail")&"</li><hr />"&VbCrlf)
rs.movenext
wend
response.Write("下面是第3个显示QQ记录集的信息:<br />")
set rs=rs.Nextrecordset '当你要显示第2个
while not rs.eof
response.Write("<li>"&rs("uQQ")&"</li><hr />"&VbCrlf)
rs.movenext
wend
set rs=nothing
保存下。
按F12运行看到的效果如下图:
Word教程网 | Excel教程网 | Dreamweaver教程网 | Fireworks教程网 | PPT教程网 | FLASH教程网 | PS教程网 |
HTML教程网 | DIV CSS教程网 | FLASH AS教程网 | ACCESS教程网 | SQL SERVER教程网 | C语言教程网 | JAVASCRIPT教程网 |
ASP教程网 | ASP.NET教程网 | CorelDraw教程网 |