MSSQL网站制作之MSSQL数据库:存储历程进修
为了在某种程序上弥补这一缺陷,许多SQL命令都有一个DELAY_KEY_WRITE项。这个选项的作用是暂时制止MySQL在该命令每插入一条新记录和每修改一条现有之后立刻对索引进行刷新,对索引的刷新将等到全部记录插入/修改完毕之后再进行。存储历程|数据|数据库这个例子内里我们从两个表中掏出头两行,然后兼并到一个表中。
在实际中我们经常会碰到如许的情形,在一个数据库中存在两个表,假定表1贮存着公司个产物本季度发卖信息,表2贮存着公司本季度欠款金额情形。在一个页面中我们想把这两个信息显现出来。一般的做法是在程序中举行两次SQL查询,前往两个了局集,在分离显现出来,十分贫苦。
上面是完成这个功效的代码:
CREATEPROCEDUREtest
AS
SETNOCOUNTON--唆使存储历程不前往查询影响的行数
DECLARE@col1cvarchar(20),@col2cvarchar(20),@indexint
SET@index=1
CREATETABLE#tmptbl--创立一个一时表,用于贮存我们的了局
(
colIDintIDENTITY(1,1)PRIMARYKEYCLUSTERED,
col1varchar(20),
col2varchar(20)
)
DECLAREcur1CURSORFORSELECTTOP2customeridFROMorders
DECLAREcur2CURSORFORSELECTTOP2regiondescriptionFROMregion
OPENcur1
OPENcur2
FETCHcur2INTO@col2c
FETCHcur1INTO@col1c
WHILE@@FETCH_STATUS=0
BEGIN
INSERTINTO#tmptbl(col1,col2)VALUES(@col1c,@col2c)
FETCHNEXTFROMcur1INTO@col1c
FETCHNEXTFROMcur2INTO@col2c
END
CLOSEcur1
CLOSEcur2
DEALLOCATEcur1
DEALLOCATEcur2
SELECT*FROM#tmptbl
DROPTABLE#tmptbl
GO
申明:
@@FETCH_STATUS,前往被fetch语句实行的最初游标形态。
前往值:0-FETCH语句实行乐成
1-FETCH语句失利,或此行不再了局会合。
2-被提取的行不存在。
因此我们看到,这些信息足够让我们对单个操作实现“逆操作”。 财务软件要用SQL也只是后台的数据库而已,软件都是成品的,当然多学东西肯定是有好处的.. 索引视图2k就有。但是2005对其效率作了一些改进但是schema.viewname的作用域真是太限制了它的应用面。还有一大堆的环境参数和种种限制都让人对它有点却步。 两个月啃那本sqlserver2005技术内部-存储引擎,花了几个月啃四本书 习惯敲命令行的朋友可能会爽一些。但是功能有限。适合机器跑不动SQLServerManagementStudio的朋友使用。 分区表是个亮点!从分区表也能看出微软要做大作强SQLServer的信心。资料很多,这里不详细说。但是重点了解的是:现在的SQLServer2005的表,都是默认为分区表的。因为它要支持滑动窗口的这个特性。这种特性对历史数据和实时数据的处理是很有帮助的。 以前的DTS轻盈简单。但是现在的SSIS虽然功能强大了很多,但是总是让人感觉太麻烦。看看论坛中询问SSIS的贴子就知道。做的功能太强大了,往往会有很多用户不会用了 一直以来个人感觉SQLServer的优化器要比Oracle的聪明。SQL2005的更是比2k聪明了不少。(有次作试验发现有的语句在200万级时还比50万级的相同语句要快show_text的一些提示没有找到解释。一直在奇怪。) 很多书籍啊,不过个人认为看书太慢,还不如自己学。多做实际的东西,就会遇到很多问题,网上搜下解决问题。不断重复这个过程,在配合sql的F1功能。
页:
[1]