asp调用mssql存储过程之完全示例.

合集下载

浅谈在asp中调用sqlserver中的存储过程

浅谈在asp中调用sqlserver中的存储过程

浅谈在ASP中调用SQL SERVER中的存储过程论文导读:ASP (ActiveServer Pages) 是服务器端的脚本编写环境,可用来创建动态Web页、生成功能强大的Web应用程序和各种基于B/S结构的治理系统。

本文就针对ASP调用SQL SERVER中的储备过程来谈谈自己的观点。

下面要紧介绍如何利用COMMAND对象来对储备过程的调用。

关键词:ASP,储备过程,COMMAND对象,CONNECTION对象ASP (Active Server Pages) 是服务器端的脚本编写环境,可用来创建动态Web页、生成功能强大的Web应用程序和各种基于B/S结构的治理系统。

ASP技术以通俗易明白的编程方式受到宽敞读者的青睐,读者通过短期的基础知识及实例培训即可开发出自己的WEB网站。

SQLSERVER是WEB站点部署最常用的数据库,它与ASP结合开发成为这一领域的经典合作。

本文就针对A SP调用SQL SERVER中的储备过程来谈谈自己的观点。

1、储备过程的简介1.1储备过程的定义:储备过程是一组编译在单个执行打算中的Trans act-SQL语句,它将一些固定的操作集中起来交给SQL SERVER数据库服务器完成,以实现某个任务。

在需要使用时只要调用即可。

1.2使用储备过程的优点1)通过本地储备、代码预编译和缓存技术实现高性能的数据操作。

储备过程是SQL语句和部分操纵流语句的预编译集合,储备过程被进行了编译和优化,当储备过程第一次执行时,SQL SERVER为其产生查询打算并将其储存在内存中,如此以后在调用该储备过程时就不必再进行编译,这能在一定程度上改善系统的性能。

2)通过通用编程结构和过程重用实现编程框架。

假如业务规则发生了变化,能够通过修改储备过程来适应新的业务规则,而不必修改客户端应用程序。

如此所有调用该储备过程的应用程序就会遵循新的业务规则。

3)通过隔离和加密的方法提高了数据库的安全性。

ASP连接MSSQL和Access数据库的接口代码文库

ASP连接MSSQL和Access数据库的接口代码文库

连接MSSQL代码(附加判断代码):引用内容<%dim cnset cn=server.createobject("adodb.connection")cn.connectionstring="driver={SQLserver};server=taihang;datebase=taihang;uid=sa;pwd=hacker"cn.openIf cn.state=1 Thenresponse.write"数据库连接对象已打开"Elseresponse.write"数据库连接对象未打开"end Ifcn.closeSet cn=nothing%>连接Access常用方法:引用内容Dim conn,strDataPath,connStrset conn=server.createobject("ADODB.connection") '//定义数据库连接对象strDataPath=server.MapPath("example.mdb") '//数据库路径字符串connStr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strDataPath '//数据库连接conn.open connStr也可以用:引用内容Dim conn,strDataPath,connStrset conn=server.createobject("ADODB.connection") '//定义数据库连接对象strDataPath=server.MapPath("example.mdb") '//数据库路径字符串connStr="driver={Microsoft Access Driver (*.mdb)};dbq=" & strDataPath '//数据库连接conn.Open connStr注解:因为我们想打开的是Access(.mdb)数据库,所以我们要透过Access的ODBC驱动程序{Microsoft Access Driver (*.mdb)}来存取数据库,dbp参数则是用来指定想打开的数据库文件,因为它必须是完整路径名称,所以我们上一语句用了Server.MapPath 函数。

asp调用mssql存储过程之完全示例

asp调用mssql存储过程之完全示例

asp调用mssql存储过程之完全示例可能有不少朋友使用SQL SERVER做开发也已经有段日子,但还没有或者很少在项目中使用存储过程,或许有些朋友认为根本没有必要使用存储过程等等。

其实当你一个项目做完到了维护阶段时,就会发现存储过程给我们带来了好处了,修改方便,不能去改我们的应用程序,只需要改存储过程的内容,而且还可以使我们的程序速度得到提高。

SQL SERVER 联机丛书中的定义:存储过程是保存起来的可以接受和返回用户提供的参数的 Transact-SQL 语句的集合。

可以创建一个过程供永久使用,或在一个会话中临时使用(局部临时过程),或在所有会话中临时使用(全局临时过程)。

也可以创建在 Microsoft SQL Server 启动时自动运行的存储过程。

要使用存储过程,首先我们必需熟悉一些基本的T-SQL语句,因为存储过程是由于一组T-SQL语句构成的,并且,我们需要了解一些关于函数、过程的概念,因为我们需要在应用程序中调用存储过程,就像我们调用应用程序的函数一样,不过调用的方法有些不同。

下面我们来看一下存储过程的建立和使用方法。

一、创建存储过程和数据表一样,在使用之前我们需要创建存储过程,它的简明语法是:以下是引用片段:CREATE PROC 存储过程名称[参数列表(多个以“,”分隔)]ASSQL 语句例:以下是引用片段:CREATE PROC upGetUserName@intUserId INT,@ostrUserName NVARCHAR(20) OUTPUT -- 要输出的参数ASBEGIN-- 将uName的值赋给 @ostrUserName 变量,即要输出的参数SELECT @ostrUserName=uName FROM uUser WHERE uId=@intUserIdEND其中 CREATE PROC 语句(完整语句为CREATE PROCEDURE)的意思就是告诉SQL SERVER,现在需要建立一个存储过程,upGetUserName 就是存储过程名称,@intUserId 和@ostrUserName 分别是该存储过程的两个参数,注意,在SQL SERVER中,所有用户定义的变量都以“@”开头,OUTPUT关键字表示这个参数是用来输出的,AS之后就是存储过程内容了。

ASP调用MSSQL存储过程并返回记录集源码详解

ASP调用MSSQL存储过程并返回记录集源码详解

ASP调用MSSQL存储过程并返回记录集源码详解以下是asp代码(demo.asp):<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%><!--#include file="adovbs.inc"--><%’通用的ASP读取MSSQL存储过程代码示例’返回临时表记录集’带传递参数dim conn,connstr,cmd,rsconnstr = "Provider=SQLOLEDB;server=服务器计算机名或IP地址;uid=用户名;pwd=密码;DATABA SE=数据库名称;" ’连接数据库字符串Set conn = Server.CreateObject("ADODB.Connection") ’创建conn对象conn.open connstr ’打开数据库Set Cmd=server.CreateObject("mand") ’创建command对象Cmd.ActiveConnection=connmandText="存储过程名" ’调用存储过程名称mandType=4cmd.prepared=trueCmd.Parameters.Append Cmd.CreateParameter("fyear",adInteger,1,2,"2007") ’示例传递给存储过程一个年份,类型是integer,对应存储过程中的@fyear变量Cmd.Parameters.Append Cmd.CreateParameter("myname",adVarChar,adParamInput,50,"阿里西西") ’示例传递给存储过程一个中文字符,类型是varchar,长度为50,对应存储过程中的@myname变量set rs=Cmd.execute’<!--循环显示返回记录集全部记录-->while not rs.eofresponse.write "<div>"&rs(0)&"|"&rs(1)&"|"&rs(2)&"</div>"rs.movenextwend’<!--循环显示返回记录集全部记录-->’<!--释放对象-->rs.closeset rs = nothingconn.closeset conn = nothingset cmd = nothing’<!--释放对象-->%>以下是存储过程代码:SET QUOTED_IDENTIFIER OFFGOSET ANSI_NULLS OFFGOALTER PROCEDURE 存储过程名(@fyear int,@myname varchar(50))ASset nocount onbegin--创建临时表create table #tmp_demo(tmp_fyear int,tmp_name varchar(50),tmp_info varchar(2000),tmp_sum in t,tmp_int int)insert into #tmp_demo select fyear,fname,finfo,sum(fsum),isnull((select fint from tb2 where fid=tb1.fid and fname=tb1.fname),0)from tb1group by fname order by fname--示例判断并返回记录if (@fyear<>’’ and @myname=’’)select * from #tmp_demo where tmp_fyear = @fyear order by tmp_sum descelse if (@fyear<>’’ and @myname<>’’)select * from #tmp_demo where tmp_fyear = @fyear and tmp_name = @myname order by tmp_su m descelseselect * from #tmp_demo order by tmp_sum descendGOSET QUOTED_IDENTIFIER OFFGOSET ANSI_NULLS ONGO以下adovbs.inc代码:<%’--------------------------------------------------------------------’ Microsoft ADO’’ (c) 1996 Microsoft Corporation. All Rights Reserved.’’’’ ADO constants include file for VBScript’’--------------------------------------------------------------------’---- CursorTypeEnum Values ----Const adOpenForwardOnly = 0Const adOpenDynamic = 2Const adOpenStatic = 3’---- CursorOptionEnum Values ---- Const adHoldRecords = &H00000100 Const adMovePrevious = &H00000200 Const adAddNew = &H01000400Const adDelete = &H01000800Const adUpdate = &H01008000Const adBookmark = &H00002000 Const adApproxPosition = &H00004000 Const adUpdateBatch = &H00010000 Const adResync = &H00020000Const adNotify = &H00040000’---- LockTypeEnum Values ----Const adLockReadOnly = 1Const adLockPessimistic = 2Const adLockOptimistic = 3Const adLockBatchOptimistic = 4’---- ExecuteOptionEnum Values ---- Const adRunAsync = &H00000010’---- ObjectStateEnum Values ----Const adStateClosed = &H00000000 Const adStateOpen = &H00000001 Const adStateConnecting = &H00000002 Const adStateExecuting = &H00000004 ’---- CursorLocationEnum Values ---- Const adUseServer = 2Const adUseClient = 3’---- DataTypeEnum Values ----Const adEmpty = 0Const adTinyInt = 16Const adSmallInt = 2Const adInteger = 3Const adBigInt = 20Const adUnsignedTinyInt = 17Const adUnsignedSmallInt = 18Const adUnsignedInt = 19Const adUnsignedBigInt = 21Const adSingle = 4Const adDouble = 5Const adCurrency = 6Const adDecimal = 14Const adNumeric = 131Const adError = 10Const adUserDefined = 132Const adVariant = 12Const adIDispatch = 9Const adIUnknown = 13Const adGUID = 72Const adDate = 7Const adDBDate = 133Const adDBTime = 134Const adDBTimeStamp = 135Const adBSTR = 8Const adChar = 129Const adVarChar = 200Const adLongVarChar = 201Const adWChar = 130Const adVarWChar = 202Const adLongVarWChar = 203Const adBinary = 128Const adVarBinary = 204Const adLongVarBinary = 205’---- FieldAttributeEnum Values ----Const adFldMayDefer = &H00000002Const adFldUpdatable = &H00000004Const adFldUnknownUpdatable = &H00000008 Const adFldFixed = &H00000010Const adFldIsNullable = &H00000020Const adFldMayBeNull = &H00000040Const adFldLong = &H00000080Const adFldRowID = &H00000100Const adFldRowVersion = &H00000200Const adFldCacheDeferred = &H00001000’---- EditModeEnum Values ----Const adEditNone = &H0000Const adEditInProgress = &H0001Const adEditAdd = &H0002Const adEditDelete = &H0004’---- RecordStatusEnum Values ----Const adRecOK = &H0000000Const adRecNew = &H0000001Const adRecModified = &H0000002Const adRecDeleted = &H0000004Const adRecUnmodified = &H0000008Const adRecInvalid = &H0000010Const adRecMultipleChanges = &H0000040 Const adRecPendingChanges = &H0000080 Const adRecCanceled = &H0000100Const adRecCantRelease = &H0000400Const adRecConcurrencyViolation = &H0000800 Const adRecIntegrityViolation = &H0001000 Const adRecMaxChangesExceeded = &H0002000 Const adRecObjectOpen = &H0004000Const adRecOutOfMemory = &H0008000Const adRecPermissionDenied = &H0010000 Const adRecSchemaViolation = &H0020000 Const adRecDBDeleted = &H0040000’---- GetRowsOptionEnum Values ----Const adGetRowsRest = -1’---- PositionEnum Values ----Const adPosUnknown = -1Const adPosBOF = -2Const adPosEOF = -3’---- enum Values ----Const adBookmarkCurrent = 0Const adBookmarkFirst = 1Const adBookmarkLast = 2’---- MarshalOptionsEnum Values ----Const adMarshalAll = 0Const adMarshalModifiedOnly = 1’---- AffectEnum Values ----Const adAffectCurrent = 1Const adAffectGroup = 2Const adAffectAll = 3’---- FilterGroupEnum Values ----Const adFilterNone = 0Const adFilterPendingRecords = 1Const adFilterAffectedRecords = 2Const adFilterFetchedRecords = 3Const adFilterPredicate = 4’---- SearchDirection Values ----Const adSearchForward = 1Const adSearchBackward = -1’---- ConnectPromptEnum Values ----Const adPromptAlways = 1Const adPromptComplete = 2Const adPromptCompleteRequired = 3Const adPromptNever = 4’---- ConnectModeEnum Values ----Const adModeUnknown = 0Const adModeRead = 1Const adModeWrite = 2Const adModeReadWrite = 3Const adModeShareDenyRead = 4Const adModeShareDenyWrite = 8Const adModeShareExclusive = &HcConst adModeShareDenyNone = &H10’---- IsolationLevelEnum Values ----Const adXactUnspecified = &HffffffffConst adXactChaos = &H00000010Const adXactReadUncommitted = &H00000100 Const adXactBrowse = &H00000100Const adXactCursorStability = &H00001000 Const adXactReadCommitted = &H00001000 Const adXactRepeatableRead = &H00010000 Const adXactSerializable = &H00100000 Const adXactIsolated = &H00100000’---- XactAttributeEnum Values ----Const adXactCommitRetaining = &H00020000 Const adXactAbortRetaining = &H00040000’---- PropertyAttributesEnum Values ----Const adPropNotSupported = &H0000Const adPropRequired = &H0001Const adPropOptional = &H0002Const adPropRead = &H0200Const adPropWrite = &H0400’---- ErrorValueEnum Values ----Const adErrInvalidArgument = &Hbb9Const adErrNoCurrentRecord = &HbcdConst adErrIllegalOperation = &Hc93Const adErrInTransaction = &HcaeConst adErrFeatureNotAvailable = &Hcb3 Const adErrItemNotFound = &Hcc1Const adErrObjectInCollection = &Hd27Const adErrObjectNotSet = &Hd5cConst adErrDataConversion = &Hd5dConst adErrObjectClosed = &He78Const adErrObjectOpen = &He79Const adErrProviderNotFound = &He7aConst adErrBoundToCommand = &He7b Const adErrInvalidParamInfo = &He7cConst adErrInvalidConnection = &He7dConst adErrStillExecuting = &He7fConst adErrStillConnecting = &He81’---- ParameterAttributesEnum Values ---- Const adParamSigned = &H0010Const adParamNullable = &H0040Const adParamLong = &H0080’---- ParameterDirectionEnum Values ---- Const adParamUnknown = &H0000Const adParamInput = &H0001Const adParamOutput = &H0002Const adParamInputOutput = &H0003Const adParamReturnValue = &H0004’---- CommandTypeEnum Values ----Const adCmdUnknown = &H0008Const adCmdText = &H0001Const adCmdTable = &H0002Const adCmdStoredProc = &H0004’---- SchemaEnum Values ----Const adSchemaProviderSpecific = -1Const adSchemaAsserts = 0Const adSchemaCatalogs = 1Const adSchemaCharacterSets = 2Const adSchemaCollations = 3Const adSchemaColumns = 4Const adSchemaCheckConstraints = 5 Const adSchemaConstraintColumnUsage = 6 Const adSchemaConstraintTableUsage = 7 Const adSchemaKeyColumnUsage = 8 Const adSchemaReferentialContraints = 9 Const adSchemaTableConstraints = 10 Const adSchemaColumnsDomainUsage = 11 Const adSchemaIndexes = 12Const adSchemaColumnPrivileges = 13 Const adSchemaTablePrivileges = 14Const adSchemaUsagePrivileges = 15 Const adSchemaProcedures = 16Const adSchemaSchemata = 17Const adSchemaSQLLanguages = 18Const adSchemaStatistics = 19Const adSchemaTables = 20Const adSchemaTranslations = 21Const adSchemaProviderTypes = 22Const adSchemaViews = 23Const adSchemaViewColumnUsage = 24 Const adSchemaViewTableUsage = 25Const adSchemaProcedureParameters = 26 Const adSchemaForeignKeys = 27Const adSchemaPrimaryKeys = 28Const adSchemaProcedureColumns = 29 %>。

ASP调用存储过程的方法

ASP调用存储过程的方法

ASP调用存储过程的方法大家知道ASP调用存储过程吗?ASP与存储过程(Stored Procedures)的文章不少,但是我怀疑作者们是否真正实践过。

我在初学时查阅过大量相关资料,发现其中提供的很多方法实际操作起来并不是那幺回事。

 1 这也是最简单的方法,两个输入参数,无返回值: set connection = server.createob ject(“adodb.connection”) connection.open someDSN Connection.Execute “procname varvalue1, varvalue2” &#39;将所有对象清为nothing,释放资源 connection.close set connection = nothing 2 如果要返回Recordset 集: set connection = server.createob ject(“adodb.connection”) connection.open someDSN set rs = server.createob ject(“adodb.recordset”) rs.Open “Exec procname varvalue1, varvalue2”,connection 将所有对象清为nothing,释放资源 rs.close connection.close set rs = nothing set connection = nothing 3 以上两种方法都不能有返回值,(Recordset除外),如果要得到返回值,需要用Command的方法。

 首先说明,返回值有两种。

一种是在存储过程中直接return一个值,就象C和VB的函数返回值那样;另一种是可以返回多个值,存储这些值的变量名称需要在调用参数中先行指定。

 这个例子要处理多种参数,输入参数,输出参数,返回记录集以及一个直接返回值(够全了吧?) 存储过程如下: use pubs GO -- 建立存储过程 create procedure sp_PubsTest -- 定义三个参数变量,注意第三个,特别标记是用于输出 @au_lname varchar (20), @intID int, @intIDOut int OUTPUT AS SELECT @intIDOut = @intID + 1 SELECT * FROM authors WHERE au_lname LIKE @au_lname + &#39;%&#39; --直接返回一个值 RETURN @intID + 2 相信大家已经了解ASP调用存储过程了吧!。

asp导航excel数据到mssqlaccessmysql等数据方法

asp导航excel数据到mssqlaccessmysql等数据方法

asp导航excel数据到mssqlaccessmysql等数据方法下面是一段简单的由asp导入excel数据保存到其它的数据如有mssql access mysql 等哦好了费话不说多了来看看下面的代码吧<! #include file="adoconn asp" > <% Set xlsconn = server CreateObject("adodb connection") set rs=server CreateObject("adodb recordset")source =server mappath(" ")&""&replace(request("path") "/" "") myConn_Xsl="Provider=Microsoft Jet OLEDB ;Data Source=" &source & ";Extended Properties=Excel " xlsconn open myConn_Xslsql="select * from [商品列表$]" set rs=xlsconn execute(sql) if not rs eof then while not rs eof names=rs("商品名") pic=rs("图片")sql="insert into [product](namese pic) values( "& names &" "& pic &" )" conn execute(sql)rs movenext wendend if response write "导入成功" end if %>数据连接文件<! #include file="adoconn asp" >lishixinzhi/Article/program/net/201311/14100。

sql存储过程和asp调用真正完整版

sql存储过程和asp调用真正完整版

SQL存储过程和ASP调用&lt;真正完整版&gt;SQL存储过程和ASP调用春暖花开- BY - 2006-5-13 19:18:00ASP与存储过程(Stored Procedures)的文章不少,但是我怀疑作者们是否真正实践过。

我在初学时查阅过大量相关资料,发现其中提供的很多方法实际操作起来并不是那么回事。

对于简单的应用,这些资料也许是有帮助的,但仅限于此,因为它们根本就是千篇一律,互相抄袭,稍微复杂点的应用,就全都语焉不详了。

现在,我基本上通过调用存储过程访问SQL Server,以下的文字都是实践的总结,希望对大家能有帮助。

存储过程就是作为可执行对象存放在数据库中的一个或多个SQL命令。

定义总是很抽象。

存储过程其实就是能完成一定操作的一组SQL语句,只不过这组语句是放在数据库中的(这里我们只谈SQL Server)。

如果我们通过创建存储过程以及在ASP中调用存储过程,就可以避免将SQL语句同ASP代码混杂在一起。

这样做的好处至少有三个:第一、大大提高效率。

存储过程本身的执行速度非常快,而且,调用存储过程可以大大减少同数据库的交互次数。

第二、提高安全性。

假如将SQL语句混合在ASP代码中,一旦代码失密,同时也就意味着库结构失密。

第三、有利于SQL语句的重用。

在ASP中,一般通过command对象调用存储过程,根据不同情况,本文也介绍其它调用方法。

为了方便说明,根据存储过程的输入输出,作以下简单分类: 1. 只返回单一记录集的存储过程假设有以下存储过程(本文的目的不在于讲述T-SQL语法,所以存储过程只给出代码,不作说明):/*SP1*/CREATE PROCEDURE dbo.getUserListasset nocount onbeginselect * from dbo.[userinfo]endgo以上存储过程取得userinfo表中的所有记录,返回一个记录集。

通过command对象调用该存储过程的ASP代码如下: &#8216;**通过Command对象调用存储过程**DIM MyComm,MyRstSet MyComm =Server.CreateObject("mand")MyComm.ActiveConnection = MyConStr&#8216;MyConStr是数据库连接字串mandText = "getUserList" &#8216;指定存储过程名mandType = 4 &#8216;表明这是一个存储过程MyComm.Prepared = true &#8216;要求将SQL命令先行编译Set MyRst = MyComm.ExecuteSet MyComm = Nothing存储过程取得的记录集赋给MyRst,接下来,可以对MyRst进行操作。

asp.net中调用存储过程的方法

asp.net中调用存储过程的方法

中调⽤存储过程的⽅法本⽂实例讲述了中调⽤存储过程的⽅法。

分享给⼤家供⼤家参考,具体如下:⼀、建⽴并调⽤⼀个不带参数的存储过程如下:CREATE PROCEDURE 全部学⽣<dbo.selectUsers>AS SELECT * FROM 学⽣GOEXEC 全部学⽣建⽴并调⽤⼀个带参数的存储过程如下:CREATE PROCEDURE 学⽣查询1@SNAME VARCHAR(8),@SDEPT VARCHAR(20)AS SELECT * FROM 学⽣ WHERE 姓名=@SNAME AND 所在系=@SDEPTGOEXEC 学⽣查询1 '张三','计算机系'或:EXEC 学⽣查询1 @SNAME='张三',@SDEPT='计算机系'(2)删除存储过程:DROP PROCEDURE<存储过程名组>⼆、在中调⽤存取过程:DBHelper.cs//不带参数public static DataTable GetList(string sqlDBO){DataSet ds = new DataSet();SqlCommand cmd = new SqlCommand(sqlDBO, Connection);mandType = CommandType.StoredProcedure; //指定命令类型为存储过程SqlDataAdapter da = new SqlDataAdapter(cmd);da.Fill(ds);return ds.Tables[0];}//带参数public static DataTable GetList(string sqlDBO,params SqlParameter[] values){DataSet ds = new DataSet();SqlCommand cmd = new SqlCommand(sqlDBO, Connection);mandType = CommandType.StoredProcedure; //指定命令类型为存储过程cmd.Parameters.AddRange(values);//cmd.Parameters.AddWithValue("@参数1", 值1);//cmd.Parameters.AddWithValue("@参数2", 值2);SqlDataAdapter da = new SqlDataAdapter(cmd);da.Fill(ds);return ds.Tables[0];}UsersService.cs//不带参数public static IList<Users> GetUserList(){List<Users> list = new List<Users>();DataTable table = DBHelper.GetList("存储过程名称");foreach (DataRow row in table.Rows){Users users = new Users();users.Id=(int)row["id"];erName=(string)row["userName"];users.Password=(string)row["password"];list.Add(users);}return list;}//带参数public static IList<Users> GetUserList(string userName,string password){List<Users> list = new List<Users>();SqlParameter[] para=new SqlParameter[]{new SqlParameter("@userName",userName),new SqlParameter("@password",password)};DataTable table = DBHelper.GetList("存储过程名称",para);foreach (DataRow row in table.Rows){Users users = new Users();users.Id=(int)row["id"];erName=(string)row["userName"];users.Password=(string)row["password"];list.Add(users);}return list;}更多关于相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》及《》。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

∙asp调用mssql存储过程之完全示例可能有不少朋友使用SQL SERVER做开发也已经有段日子,但还没有或者很少在项目中使用存储过程,或许有些朋友认为根本没有必要使用存储过程等等。

其实当你一个项目做完到了维护阶段时,就会发现存储过程给我们带来了好处了,修改方便,不能去改我们的应用程序,只需要改存储过程的内容,而且还可以使我们的程序速度得到提高。

SQL SERVER 联机丛书中的定义:存储过程是保存起来的可以接受和返回用户提供的参数的 Transact-SQL 语句的集合。

可以创建一个过程供永久使用,或在一个会话中临时使用(局部临时过程),或在所有会话中临时使用(全局临时过程)。

也可以创建在 Microsoft SQL Server 启动时自动运行的存储过程。

要使用存储过程,首先我们必需熟悉一些基本的T-SQL语句,因为存储过程是由于一组T-SQL语句构成的,并且,我们需要了解一些关于函数、过程的概念,因为我们需要在应用程序中调用存储过程,就像我们调用应用程序的函数一样,不过调用的方法有些不同。

下面我们来看一下存储过程的建立和使用方法。

一、创建存储过程和数据表一样,在使用之前我们需要创建存储过程,它的简明语法是:例:以下是引用片段:CREATE PROC upGetUserName@intUserId INT,@ostrUserName NVARCHAR(20 OUTPUT -- 要输出的参数ASBEGIN-- 将uName的值赋给@ostrUserName 变量,即要输出的参数SELECT @ostrUserName=uName FROM uUser WHERE uId=@intUserId END其中 CREATE PROC 语句(完整语句为CREATE PROCEDURE)的意思就是告诉SQL SERVER,现在需要建立一个存储过程,upGetUserName 就是存储过程名称,@intUserId 和@ostrUserName 分别是该存储过程的两个参数,注意,在SQL SERVER中,所有用户定义的变量都以“@”开头,OUTPUT关键字表示这个参数是用来输出的,AS之后就是存储过程内容了。

只要将以上代码在“查询分析器”里执行一次,SQL SERVER就会在当前数据库中创建一个名为“upGetUserName”的存储过程。

你可以打开“企业管理器”,选择当前操作的数据库,然后在左边的树型列表中选择“存储过程”,此时就可以在右边的列表中看到你刚刚创建的存储过程了(如果没有,刷新一下即可)。

二、存储过程的调用之前我们已经创建了一个名为“upGetUserName”的存储过程,从字面理解该存储过程的功能是用来取得某一个用户的名称。

存储过程建立好了,接下来就是要在应用程序里调用了,下面看一下在ASP程序里的调用。

以下是引用片段:Dim adoComm’//创建一个对象,我们用来调用存储过程Set adoComm = CreateObject("mand"With adoComm’//设置连接,设adoConn 为已经连接的ADODB.Connection 对象.ActiveConnection = adoConn’//类型为存储过程,adCmdStoredProc = 4.CommandType = 4’//存储过程名称.CommandText = "upGetUserName"’//设置用户编号.Parameters.Item("@intUserId".Value = 1’//执行存储过程.Execute’//取得从存储过程返回的用户名称Response.Write "用户名:" & .Parameters.Item("@ostrUserName".ValueEnd With通过以上两步,我们已经可以创建和使用简单的存储过程了。

下面我们来看一个稍微复杂点的存储过程,以进一步了解存储过程的应用。

三、存储过程的实际应用用户登录在ASP项目中经常会使用到,相信很多朋友也都做过类似的系统,但使用存储过程来做验证朋友可能不多,那么我们就以它来做例子,写一个简单的用户登录验证的存储过程。

以下是引用片段:CREATE PROC upUserLogin@strLoginName NVARCHAR(20,@strLoginPwd NVARCHAR(20,@blnReturn BIT OUTPUTAS-- 定义一个临时用来保存密码的变量DECLARE @strPwd NVARCHAR(20BEGIN-- 从表中查询当前用户的密码,赋值给@strPwd 变量,下面要对他进行比较SELECT @strPwd=uLoginPwd FROM uUser WHERE uLoginName=@strLogi nNameIF @strLoginPwd = @strPwdBEGINSET @blnReturn = 1-- 更新用户最后登录时间UPDATE uUser SET uLastLogin=GET DATE( WHERE uLoginName=@strLoginNameENDELSESET @blnReturn = 0END用户登录的存储过程建立好了,现在在程序里试一下吧。

注意,在一个区域内如果有多条语句时,必需使用BEGIN...END关键字。

以下是引用片段:Dim adoComm’//创建一个对象,我们用来调用存储过程Set adoComm = CreateObject("mand"With adoComm’//设置连接,设adoConn 为已经连接的ADODB.Connection 对象.ActiveConnection = adoConn’//类型为存储过程,adCmdStoredProc = 4.CommandType = 4’//存储过程名称.CommandText = "upUserLogin"’//设置登录名称.Parameters.Item("@strLoginName".Value = "admin"’//设置登录密码.Parameters.Item("@strLoginPwd".Value = "123456"’//执行存储过程.Execute’//判断是否登录成功If .Parameters.Item("@blnReturn".Value = 1 ThenResponse.Write "恭喜你,登录成功!"ElseResponse.Write "不是吧,好像错了哦。

"End IfEnd With’//释放对象Set adoComm = Nothing通过以上的步骤,简单用户登录验证过程也做完了,现在只要把它整合到程序中就可以实现简单的用户登录验证了,关于其他细节就由你自己来处理了。

上面介绍的两个存储过程都是只返回一个值的,下面我们来看一个返回一个记录集的存储过程。

以下是引用片段:CREATE PROC upGetUserInfos@intUserGroup INTASBEGIN-- 从数据库中抽取符合条件的数据SELECT uName,uGroup,uLastLogin FROM uUser WHERE uGroup=@intUs erGroup-- 插入一列合计UNIONSELECT’合计人数:’,COUNT(uGroup,NULL FROM uUser WHERE uGroup=@intUserGroupEND现在我们来看一下ASP程序的调用。

以下是引用片段:Dim adoCommDim adoRt’//创建一个对象,我们用来调用存储过程Set adoComm = CreateObject("mand"Set adoRs = CreateObject("ADODB.Recordset"With adoComm’//设置连接,设adoConn 为已经连接的ADODB.Connection 对象.ActiveConnection = adoConn’//类型为存储过程,adCmdStoredProc = 4.CommandType = 4’//存储过程名称.CommandText = "upGetUserInfos"’//设置用户组.Parameters.Item("@intUserGroup".Value = 1’//执行存储过程,和以上几个例子不同,这里使用RecordSet的Open 方法adoRs.Open adoComm’//显示第一个值Response.write adoRs.Fields(0.ValueEnd With’//释放对象Set adoRs = NothingSet adoComm = Nothing怎么样,是不是也很简单呢,不过存储过程的用处不仅仅只有这些,他还有更强大的功能,比如使用游标、临时表来从多个表,甚至是多个数据库中调用数据,然后返回给用户,这些你可以在使用过程中慢慢的去发掘。

相关文档
最新文档