仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 5820|回复: 20
打印 上一主题 下一主题

[学习教程] ASP网页设计ASP中利用存储进程

[复制链接]
小魔女 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-16 00:27:59 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
因为现在数据库都使用标准的SQL语言对数据库进行管理,所以如果是标准SQL语言,两者基本上都可以通用的。SQL Server还有更多的扩展,可以用存储过程,数据库大小无极限限制。存储进程|存储进程   进修利用存储进程(Stored Procedure),是ASP法式员的必需课之一。

一切的大型数据库都撑持存储进程,好比Oracle、MS SQL等,(但MS Access不撑持,不外,在Access里可使用参数化的查询)。

存储进程是使用SQL Server所供应的Tranact-SQL言语所编写的法式。Tranact-SQL言语是SQL Server供应专为设计数据库使用法式的言语,它是使用法式和SQL Server数据库间的次要法式式设计界面。它比如Oracle数据库体系中的Pro-SQL和Informix的数据库体系可以中的Informix-4GL言语一样。这类言语次要供应以下功效,让用户可以设计出合适援用需求的法式:
1)、变量申明
2)、ANSI兼容的SQL号令(如Select,Update….)
3)、普通流程掌握号令(if…else…、while….)
4)、外部函数

存储进程的书写格


CREATE PROCEDURE [具有者.]存储进程名[;法式编号]
[(参数#1,…参数#1024)]
[WITH
{RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION}
]
[FOR REPLICATION]
AS 法式行



个中存储进程名不克不及超越128个字。每一个存储过程当中最多设定1024个参数(SQL Server 7.0以上版本),参数的利用办法以下:


@参数名 数据类型 [VARYING] [=内定值] [OUTPUT]



每一个参数名前要有一个“@”符号,每个存储进程的参数仅为该法式外部利用,参数的类型除IMAGE外,其他SQL Server所撑持的数据类型都可以使用。

[=内定值]相当于咱们在创立数据库时设定一个字段的默许值,这里是为这个参数设定默许值。[OUTPUT]是用来指定该参数是既有输出又有输入值的,也就是在挪用了这个存储进程时,假如所指定的参数值是咱们需求输出的参数,同时也需求在了局中输入的,则该项必需为OUTPUT,而假如只是做输入参数用,可以用CURSOR,同时在利用该参数时,必需指定VARYING和OUTPUT这两个语句。


CREATE PROCEDURE order_tot_amt @o_id int,@p_tot int output AS
SELECT @p_tot = sum(Unitprice*Quantity)
FROM orderdetails
WHERE ordered=@o_id




该例子是创立一个复杂的存储进程order_tot_amt,这个存储进程依据用户输出的订单ID号码(@o_id),由订单明细表(orderdetails)上钩算该订单发卖总额[单价(Unitprice)*数目(Quantity)],这一金额经由过程@p_tot这一参数输入给挪用这一存储进程的法式

利用存储进程有很多优点,它可以封装庞杂的数据逻辑,充实发扬大型数据库自己的优势。

咱们晓得,ASP其实不合适做庞杂的数据运算,而经由过程OLD DB会见数据库,因为数据需求在ASP和数据库之间传递,相当损耗体系资本。

现实上,假如数据库仅仅起着数据存储的感化,那末它的功效是远远没有失掉使用的。

关于若何创立存储进程,请参考MS SQL的相干文档。

本文引见存储进程若何在ASP中应用。

复杂的一个SQL语句:


select ID,Name,Picture,Time,Duty from employ



咱们可以创立一个存储进程:


CREATE PROCEDURE sp_employ
AS
select ID,Name,Picture,Time,Duty from employ
Go



而SQL语句:


select ID,Name,Picture,Time,Duty from employ where ID=10230



对应的存储进程是:(用Alter交换咱们已有的存储进程)


ALTER PROCEDURE sp_employ
@inID int
AS
select ID,Name,Picture,Time,Duty from employ where ID=@inID
Go




上面对照一下SQL和存储进程在ASP中的情形。起首看看直接履行SQL的情形:


<%
dim Conn, strSQL, rs
set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DSN=webData;uid=user;pwd=password"
strSQL = "select ID,Name,Picture,Time,Duty from employ "
Set rs = Conn.Execute(strSQL)
%>




再看看若何履行Stored Procedure:

<%
dim Conn, strSQL, rs
set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DSN=webData;uid=user;pwd=password" ’make connection
strSQL = "sp_employ"
Set rs = Conn.Execute(strSQL)
%>

而履行带参数的Stored Procedure也是相当相似的:


<%
dim Conn, strSQL, rs, myInt
myInt = 1
set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DSN=webData;uid=user;pwd=password"
strSQL = "sp_myStoredProcedure " & myInt
Set rs = Conn.Execute(strSQL)
%>




在SQL Server中履行存储进程

在SQL Server的查询剖析器中,输出以下代码:
declare @tot_amt int
execute order_tot_amt 1,@tot_amt output
select @tot_amt

以上代码是履行order_tot_amt这一存储进程,以盘算出订单编号为1的订单发卖金额,咱们界说@tot_amt为输入参数,用来承接咱们所要的了局


在ASP中挪用存储进程


<!--必需加载adovbs.inc文件,不然将失足-->
<!--#include file="adovbs.inc"-->
<%
dim objCnn
dim objCmd
dim Rs
const o_id=112

'-----创立Connection对象----------
set objCnn=Server.CreateObject("Adodb.connection")
objCnn.Open "driver={sql server};server=localhost;uid=sa;pwd=cncanet;database=check;"
'-----创立Command对象-----------
set objCmd=Server.CreateObject("Adodb.Command")
objCmd.ActiveConnection=objCnn
objCmd.CommandText="order_tot_amt" '指定存储进程称号
objCmd.CommandType=adCmdStoredProc '其为Stored Procedure
'-----筹办stored procedure 的参数-------
objCmd.Parameters.Append _
objCmd.CreateParameter("o_id",adInteger,adParamInput,,o_id)
objCmd.Parameters.Append _
objCmd.CreateParameter("p_tot",adBigInt,adParamOutput,,0)
'-----履行存储进程----------------------
objCmd.Execute

'-----输入参数和处置了局--------------
for each parm in objCmd.Parameters
Response.Write parm.name &a</p>  ASP脚本是采用明文(plain text)方式来编写的。
山那边是海 该用户已被删除
21#
发表于 2015-7-28 19:17:44 | 只看该作者
接下来就不能纸上谈兵了,最好的方法其实是实践。实践,只能算是让你掌握语言特性用的。而提倡做实际的Project也不是太好,因为你还没有熟练的能力去综合各种技术,这样只能使你自己越来越迷糊。
灵魂腐蚀 该用户已被删除
20#
发表于 2015-6-13 00:11:40 | 只看该作者
先学习用frontpage熟悉html编辑然后学习asp和vbscript建议买书进行系统学习
冷月葬花魂 该用户已被删除
19#
发表于 2015-5-6 06:12:24 | 只看该作者
运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写,使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行。
因胸联盟 该用户已被删除
18#
发表于 2015-4-28 21:39:06 | 只看该作者
那么,ASP.Net有哪些改进呢?
再现理想 该用户已被删除
17#
发表于 2015-4-26 07:38:23 | 只看该作者
在平时的学习过程中要注意现学现用,注重运用,在掌握了一定的基础知识后,我们可以尝试做一些网页,也许在开始的时候我们可能会遇到很多问题,比如说如何很好的构建基本框架。
若天明 该用户已被删除
16#
发表于 2015-4-12 22:32:29 | 只看该作者
弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。
老尸 该用户已被删除
15#
发表于 2015-4-12 04:43:30 | 只看该作者
从事这个行业,那么你可以学ASP语言,简单快速上手,熟练dreamweav排版,写asp代码,熟练photoshop处理图片,打好基础就行了
第二个灵魂 该用户已被删除
14#
发表于 2015-4-12 03:56:23 | 只看该作者
以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。
柔情似水 该用户已被删除
13#
发表于 2015-4-11 11:53:40 | 只看该作者
接下来就不能纸上谈兵了,最好的方法其实是实践。实践,只能算是让你掌握语言特性用的。而提倡做实际的Project也不是太好,因为你还没有熟练的能力去综合各种技术,这样只能使你自己越来越迷糊。
不帅 该用户已被删除
12#
发表于 2015-4-7 06:35:17 | 只看该作者
作为IE上广为流传的动态网页开发技术,ASP以它简单易学博得了广大WEB程序爱好这的青睐,而且它对运行环境和开发品台的不挑剔,以及有大量有效的参考手册,极大的推广了它的发展。
爱飞 该用户已被删除
11#
发表于 2015-4-7 01:30:03 | 只看该作者
尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性,比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。
乐观 该用户已被删除
10#
发表于 2015-4-4 22:38:06 | 只看该作者
完全不知道到底自己学的是什么。最后,除了教程里面说的几个例子,还是什么都不会。
分手快乐 该用户已被删除
9#
发表于 2015-4-4 04:33:56 | 只看该作者
用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。
小妖女 该用户已被删除
8#
发表于 2015-3-23 00:57:19 | 只看该作者
那么,ASP.Net有哪些改进呢?
7#
发表于 2015-3-20 00:20:51 | 只看该作者
ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码,能产生和执行动态、交互式、高效率的站占服务器的应用程序。
变相怪杰 该用户已被删除
6#
发表于 2015-3-12 16:37:58 | 只看该作者
运用经典的例子。并且自己可以用他来实现一些简单的系统。如果可以对他进行进一步的修改,找出你觉得可以提高性能的地方,加上自己的设计,那就更上一个层次了,也就会真正地感到有所收获。
精灵巫婆 该用户已被删除
5#
发表于 2015-3-10 17:48:17 | 只看该作者
ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码,能产生和执行动态、交互式、高效率的站占服务器的应用程序。
活着的死人 该用户已被删除
地板
发表于 2015-3-8 15:53:47 | 只看该作者
尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性,比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。
再见西城 该用户已被删除
板凳
发表于 2015-2-26 15:58:23 | 只看该作者
Application:这个存储服务端的数据,如果不清除,会直到web应用程序结束才清除(例如重启站点)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 00:53

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表