|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
先说DDL的分类。有一类DDL,是不需要重建表的,比如加非聚簇索引。这类操作其实不会丢数据,也是在原表上直接操作,对于我们“以恢复数据为目的”的闪回,是可以先忽略的。另外一类,则是会影响到表数据的操作。大概有很多伴侣利用SQLSERVER做开辟也已有段日子,但还没有大概很少在项目中利用存储历程,也许有些伴侣以为基本没有需要利用存储历程等等。实在当你一个项目做完到了保护阶段时,就会发明存储历程给我们带来了优点了,修正便利,不克不及往改我们的使用程序,只必要改存储历程的内容,并且还可使我们的程序速率失掉进步。
QUOTE:SQLSERVER联机丛书中的界说:
存储历程是保留起来的能够承受和前往用户供应的参数的Transact-SQL语句的汇合。
能够创立一个历程供永世利用,或在一个会话中一时利用(部分一时历程),或在一切会话中一时利用(全局一时历程)。
也能够创立在MicrosoftSQLServer启动时主动运转的存储历程。
要利用存储历程,起首我们必须熟习一些基础的T-SQL语句,由于存储历程是因为一组T-SQL语句组成的,而且,我们必要懂得一些关于函数、历程的观点,由于我们必要在使用程序中挪用存储历程,就像我们挪用使用程序的函数一样,不外挪用的办法有些分歧。
上面我们来看一下存储历程的创建和利用办法。
1、创立存储历程
和数据表一样,在利用之前我们必要创立存储历程,它的简明语法是:
QUOTE:CREATEPROC存储历程称号
[参数列表(多个以“,”分开)]
AS
SQL语句
例:
QUOTE:CREATEPROCupGetUserName
@intUserIdINT,
@ostrUserNameNVARCHAR(20)OUTPUT--要输入的参数
AS
BEGIN
--将uName的值赋给@ostrUserName变量,即要输入的参数
SELECT@ostrUserName=uNameFROMuUserWHEREuId=@intUserId
END
个中CREATEPROC语句(完全语句为CREATEPROCEDURE)的意义就是告知SQLSERVER,如今必要创建一个存储历程,upGetUserName就是存储历程称号,@intUserId和@ostrUserName分离是该存储历程的两个参数,注重,在SQLSERVER中,一切用户界说的变量都以“@”开首,OUTPUT关头字暗示这个参数是用来输入的,AS以后就是存储历程内容了。只需将以上代码在“查询剖析器”里实行一次,SQLSERVER就会在以后数据库中创立一个名为“upGetUserName”的存储历程。你能够翻开“企业办理器”,选择以后操纵的数据库,然后在右边的树型列表当选择“存储历程”,此时就能够在右侧的列表中看到你方才创立的存储历程了(假如没有,革新一下便可)。
2、存储历程的挪用
之前我们已创立了一个名为“upGetUserName”的存储历程,从字面了解该存储历程的功效是用来获得某一个用户的称号。存储历程创建好了,接上去就是要在使用程序里挪用了,上面看一下在ASP程序里的挪用。
QUOTE:DimadoComm
//创立一个工具,我们用来挪用存储历程
SetadoComm=CreateObject("ADODB.Command")
WithadoComm
//设置毗连,设adoConn为已毗连的ADODB.Connection工具
.ActiveConnection=adoConn
//范例为存储历程,adCmdStoredProc=4
.CommandType=4
//存储历程称号
.CommandText="upGetUserName"
//设置用户编号
.Parameters.Item("@intUserId").Value=1
//实行存储历程
.Execute
//获得从存储历程前往的用户称号
Response.Write"用户名:"&.Parameters.Item("@ostrUserName").Value
EndWith
//开释工具
SetadoComm=Nothing
经由过程以上两步,我们已能够创立和利用复杂的存储历程了。上面我们来看一个略微庞大点的存储历程,以进一步懂得存储历程的使用。
3、存储历程的实践使用
用户登录在ASP项目中常常会利用到,信任良多伴侣也都做过相似的体系,但利用存储历程来做考证伴侣大概未几,那末我们就以它来做例子,写一个复杂的用户登录考证的存储历程。
QUOTE:CREATEPROCupUserLogin
@strLoginNameNVARCHAR(20),
@strLoginPwdNVARCHAR(20),
@blnReturnBITOUTPUT
AS
--界说一个一时用来保留暗码的变量
DECLARE@strPwdNVARCHAR(20)
BEGIN
--从表中查询以后用户的暗码,赋值给@strPwd变量,上面要对他举行对照
SELECT@strPwd=uLoginPwdFROMuUserWHEREuLoginName=@strLoginName
IF@strLoginPwd=@strPwd
BEGIN
SET@blnReturn=1
--更新用户最初登录工夫
UPDATEuUserSETuLastLogin=GETDATE()WHEREuLoginName=@strLoginName
END
ELSE
SET@blnReturn=0
END
用户登录的存储历程创建好了,如今在程序里试一下吧。注重,在一个地区内假如有多条语句时,必须利用BEGIN...END关头字。
QUOTE:DimadoComm
//创立一个工具,我们用来挪用存储历程
SetadoComm=CreateObject("ADODB.Command")
WithadoComm
//设置毗连,设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=1Then
Response.Write"祝贺你,登录乐成!"
Else
Response.Write"不是吧,仿佛错了哦。。。"
EndIf
EndWith
//开释工具
SetadoComm=Nothing
经由过程以上的步骤,复杂用户登录考证历程也做完了,如今只需把它整合到程序中就能够完成复杂的用户登录考证了,关于其他细节就由你本人来处置了。
下面先容的两个存储历程都是只前往一个值的,上面我们来看一个前往一个纪录集的存储历程。
QUOTE:CREATEPROCupGetUserInfos
@intUserGroupINT
AS
BEGIN
--从数据库中抽取切合前提的数据
SELECTuName,uGroup,uLastLoginFROMuUserWHEREuGroup=@intUserGroup
--拔出一列算计
UNION
SELECT算计人数:,COUNT(uGroup),NULLFROMuUserWHEREuGroup=@intUserGroup
END
如今我们来看一下ASP程序的挪用。
QUOTE:DimadoComm
DimadoRt
//创立一个工具,我们用来挪用存储历程
SetadoComm=CreateObject("ADODB.Command")
SetadoRs=CreateObject("ADODB.Recordset")
WithadoComm
//设置毗连,设adoConn为已毗连的ADODB.Connection工具
.ActiveConnection=adoConn
//范例为存储历程,adCmdStoredProc=4
.CommandType=4
//存储历程称号
.CommandText="upGetUserInfos"
//设置用户组
.Parameters.Item("@intUserGroup").Value=1
//实行存储历程,和以上几个例子分歧,这里利用RecordSet的Open办法
adoRs.OpenadoComm
//显现第一个值
Response.writeadoRs.Fields(0).Value
EndWith
//开释工具
SetadoRs=Nothing
SetadoComm=Nothing
怎样,是否是也很复杂呢,不外存储历程的用途不单单只要这些,他另有更壮大的功效,好比利用游标、一时表来从多个表,乃至是多个数据库中挪用数据,然后前往给用户,这些你能够在利用过程当中渐渐的往开掘。
好了,存储历程使用就先先容到这里,假如你对本文有任何疑问,接待跟贴提出,我将全力赐与解答。下次我将给人人先容触发器的使用。
2008年1月16号MySQLAB被Sun公司收购。而2009年,SUN又被Oracle收购。就这样如同一个轮回,MySQL成为了Oracle公司的另一个数据库项目。 |
|