|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
为了在某种程序上弥补这一缺陷,许多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-被提取的行不存在。
因此我们看到,这些信息足够让我们对单个操作实现“逆操作”。 |
|