小魔女 发表于 2015-1-16 22:17:36

MSSQL网页设计【原创:数据库】SQL SERVER数据库开辟...

先说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公司的另一个数据库项目。

只想知道 发表于 2015-1-19 06:50:21

只能告诉你,学好数据库语言和原理,多见识几种数据库软件,比一棵树上吊死要好。

飘飘悠悠 发表于 2015-1-26 23:55:16

可以动态传入参数,省却了动态SQL的拼写。

小魔女 发表于 2015-2-5 01:31:33

分区表是个亮点!从分区表也能看出微软要做大作强SQLServer的信心。资料很多,这里不详细说。但是重点了解的是:现在的SQLServer2005的表,都是默认为分区表的。因为它要支持滑动窗口的这个特性。这种特性对历史数据和实时数据的处理是很有帮助的。

灵魂腐蚀 发表于 2015-2-11 01:50:35

两个月啃那本sqlserver2005技术内部-存储引擎,花了几个月啃四本书

不帅 发表于 2015-3-1 19:37:01

两个月啃那本sqlserver2005技术内部-存储引擎,花了几个月啃四本书

山那边是海 发表于 2015-3-10 23:00:15

多加的系统视图和实时系统信息这些东西对DBA挑优非常有帮助,但是感觉粒度还是不太细。

透明 发表于 2015-3-17 15:50:14

理解了存储结构,再阅读下性能优化的章节基本上会对sqlserver有个清晰地认识

小妖女 发表于 2015-3-24 10:33:41

而写到本地,我又考虑到效率问题.大家来讨论讨论吧,分数不打紧,就给10分,十全十美,没啥对错,各抒己见,但是要有说服力的哦~
页: [1]
查看完整版本: MSSQL网页设计【原创:数据库】SQL SERVER数据库开辟...