ASP 3.0高级编程(四十一)

紫荨浅夏

紫荨浅夏

2016-01-29 19:17

ASP 3.0高级编程(四十一),ASP 3.0高级编程(四十一)
  9.2.3 存储过程
       存储过程的使用是Command对象得到应用的一个领域。存储过程(有时也称存储查询)是存储在数据库中预先定义的SQL查询语句。
       为什么应该创建和使用存储过程而不是在代码中直接使用SQL字符串呢?主要有以下几个理由:
       · 存储过程被数据库编译过。这样可以产生一个“执行计划”,因此数据库确切地知道它将做什么,从而加快了过程的执行速度。
       · 存储过程通常被数据库高速缓存,这样使它们运行得更快,因为此时不需要从磁盘中读取它们。并非所有的数据库都支持这种缓存机制,比如微软的Access就不支持,而SQL Server却支持。
       · 通过指定数据库中的表只能被存储过程修改,可以确保数据更安全。这意味着具有潜在危险的SQL操作不会执行。
       · 可以避免将ASP代码和冗长的SQL语句混在一起,从而使ASP代码更易于维护。
       · 可以将所有SQL代码集中存放于服务器。
       · 可以在存储过程中使用输出参数,允许返回记录集或其他的值。
       一般说来,存储过程几乎总是比相当的SQL语句执行速度快。
       为了使用存储过程,只要将存储过程的名字作为命令文本,并设置相应的类型。例如,考虑前面更新书价的例子。如果在SQL Server上创建一个存储过程,可以编写代码:
       CREATE PROCEDURE usp_UpdatePrices
       AS
              UPDATE Titles
              SET        Price = Price * 1.10
              WHERE  TYPE='Business'
       对于微软的Access数据库,可以使用一个简单的更新查询语句完成相同的任务,如图9-1所示:

图9-1  使用微软的Access数据库完成更新查询
       要在ASP网页中运行该存储过程,只需要使用以下代码:
       Set cmdUpdate = Server.CreateObject("ADODB.Command")

       cmdUpdate.ActiveConnection = strConn
       cmdUpdate.CommandText = "usp_UpdatePrices"
       cmdUpdate.CommandType = adCmdStoredProc

       cmdUpdate.Execute , , adExecuteNoRecords
       这只是运行存储过程。没有记录集返回,因为只是在更新数据。需要记住的是,除非确实需要,不要创建记录集。
       虽然这样做也可以,但并不是很灵活,因为仅仅处理一种类型的书。更好的做法是创建一个允许我们选择书类型的过程,这样就不必为每类书创建一个过程。同样也可去掉固定的10%更新,这样使得灵活性更好。那么,如何才能做到这一点呢,很简单,使用参数。
1.  参数
存储过程的参数(或变量)与一般的过程和函数的参数一样,可以传到函数内部,然后函数可以使用它的值。SQL Server(其他数据库也一样,包括Access)中的存储过程都具有这样的功能。
为了使存储过程能处理多种类型的书,甚至允许用户指定价格的增加(或减少),需要增加一些参数:
CREATE PROCEDURE usp_UpdatePrices
       @Type           Char(12),
       @Percent              Money

AS
       UPDATE Titles
       SET        Price = Price * (1 + @Percent / 100)
       WHERE  Type = @Type
现在,存储过程usp_UpdatePrices带有两个参数:
· 一个是书的类型(@Type)。
· 一个是书价变化的百分比
展开更多 50%)
分享

猜你喜欢

ASP 3.0高级编程(四十一)

ASP
ASP 3.0高级编程(四十一)

ASP 3.0高级编程(四十)

ASP
ASP 3.0高级编程(四十)

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

ASP 3.0高级编程(十一)

ASP
ASP 3.0高级编程(十一)

ASP 3.0高级编程(三十一)

ASP
ASP 3.0高级编程(三十一)

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

ASP 3.0高级编程(四十五)

ASP
ASP 3.0高级编程(四十五)

ASP 3.0高级编程(四十四)

ASP
ASP 3.0高级编程(四十四)

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

《巫师3 狂猎》秘密宝藏BUG的避免方法分享

《巫师3 狂猎》秘密宝藏BUG的避免方法分享

深入研究Application和Session对象

深入研究Application和Session对象
下拉加载更多内容 ↓