sqlÓαê
ÓαêµÄÀàÐÍ£º
1¡¢¾²Ì¬Óαê(²»¼ì²âÊý¾ÝÐеı仯£©
2¡¢¶¯Ì¬Óα꣨·´Ó³ËùÓÐÊý¾ÝÐеĸı䣩
3¡¢½öÏòÇ°Óα꣨²»Ö§³Ö¹ö¶¯£©
4¡¢¼ü¼¯Óα꣨ÄÜ·´Ó³Ð޸ģ¬µ«²»ÄÜ׼ȷ·´Ó³²åÈ롢ɾ³ý£©
ÓαêʹÓÃ˳Ðò£º
1¡¢¶¨ÒåÓαê
2¡¢´ò¿ªÓαê
3¡¢Ê¹ÓÃÓαê
4¡¢¹Ø±ÕÓαê
5¡¢ÊÍ·ÅÓαê
Transact-SQL£º
declare ÓαêÃû cursor [LOCAL | GLOBAL][FORWARD_ONLY | SCROLL][STATIC | KEYSET | DYNAMIC ] [READ_ONLY | SCROLL_LOCKS]
for seletÓï¾ä [for update[of ÁÐÃû[£¬ÁÐÃû]]
×¢£ºLOCAL ¾Ö²¿Óαê GLOBAL È«¾ÖÓαê
FORWARD_ONLY ½öÏòÇ° SCROLL ¹ö¶¯
STATIC ¾²Ì¬ KEYSET ¼ü¼¯ DYNAMIC ¶¯Ì¬
READ_ONLY Ö»¶Á SCROLL_LOCKS Ëø¶¨Óα굱ǰÐÐ
»ñÈ¡ÓαêµÄÊý¾Ý
FETCH [[NEXT | PRIOR | FIRST | LAST |
ABSOLUTE{ n | @nvar | RELATIVE { n | @nvar}]
from ] ÓαêÃû [into ±äÁ¿]
×¢£º
NEXT ÏÂÒ»ÐÐ PRIOR ÉÏÒ»ÐÐ FIRST µÚÒ»ÐÐ
LAST ×îºóÒ»ÐÐ ABSOLUTE n µÚnÐÐ
RELATIVE n µ±Ç°Î»ÖÿªÊ¼µÄµÚnÐÐ
into ±äÁ¿ °Ñµ±Ç°Ðеĸ÷×Ö¶ÎÖµ¸³Öµ¸ø±äÁ¿
Óαê״̬±äÁ¿:
@@fetch_status Óαê״̬
0 ³É¹¦ -1 ʧ°Ü -2 ¶ªÊ§
@@cursor_rows ÓαêÖнá¹û¼¯ÖеÄÐÐÊý
n ÐÐÊý -1 ÓαêÊǶ¯Ì¬µÄ 0 ¿Õ¼¯Óαê
²Ù×÷ÓαêµÄµ±Ç°ÐÐ:
current of ÓαêÃû
ÒÔÏÂÀý×Ó£¬ÔÚSQL SERVER 2000 ²âÊԳɹ¦
use
pubs
go
declare
@auid
char
(
12
),
@aulname
varchar
(
20
),
@aufname
varchar
(
20
),
@st
char
(
2
),
@auinfo
varchar
(
50
)
declare
auth_cur
cursor
for
select
au_id, au_lname, au_fname, state
from
authors
open
auth_cur
fetc
Ïà¹ØÎĵµ£º
create PROCEDURE pagelist
@tablename nvarchar(50),
@fieldname nvarchar(50)='*',
@pagesize int output,--ÿҳÏÔʾ¼Ç¼ÌõÊý
@currentpage int output,--µÚ¼¸Ò³
@orderid nvarchar(50),--Ö÷¼üÅÅÐò
@sort int,--ÅÅÐò·½Ê½£¬1±íʾÉýÐò£¬0±íʾ½µÐòÅÅÁÐ
......
PL/SQL¿é
declare
begin
--SQLÓï¾ä
--Ö±½ÓдµÄSQLÓï¾ä(DML/TCL)
--¼ä½Óдexecute immediate <DDL/DCLÃüÁî×Ö·û´®>
--select Óï¾ä
<1>±ØÐë´øÓÐinto×Ó¾ä
......
ORACLE SQLÐÔÄÜÓÅ»¯ÏµÁÐ
1. ·ÃÎÊTableµÄ·½Ê½
ORACLE ²ÉÓÃÁ½ÖÖ·ÃÎʱíÖмǼµÄ·½Ê½:
a. È«±íɨÃè
È«±íɨÃè¾ÍÊÇ˳ÐòµØ·ÃÎʱíÖÐÿÌõ¼Ç¼. ORACLE²ÉÓÃÒ»´Î¶ÁÈë¶à¸öÊý¾Ý¿é(database block)µÄ·½Ê½ÓÅ»¯È«±íɨÃè.
b. ͨ¹ýROWID·ÃÎʱí
Äã¿ÉÒÔ²ÉÓûùÓÚROWIDµÄ·ÃÎÊ·½Ê½Çé¿ö,Ìá¸ß·ÃÎʱíµÄЧÂÊ, , ROWID°üº¬Á˱íÖмǼµ ......
ÏÈÀ´Ò»¶Î´úÂ룺
WITH OrderedOrders AS
(SELECT *,
ROW_NUMBER() OVER (order by [id])as RowNumber¡¡¡¡--idÊÇÓÃÀ´ÅÅÐòµÄÁÐ
from table_info ) --table_infoÊDZíÃû
SELECT *
from OrderedOrders
WHERE RowNumber between 50 and 60;
ÔÚwindows server 2003, sql server 2005 CTP,P4 2.66GHZ,1GB ÄÚ´æϲâÊÔ£¬Ö´ÐÐʱ ......
declare @ID varchar(10)
set @ID=9 --¸ù½Úµã
declare @i int --¼¶Êý
declare @t table(ID varchar(10),ParentID varchar(10),Level int)
set @i = 1
insert into @t select @ID,0,0 --µ±Ç°¼¶£¬±¾¼¶£¬Èç¹û²»ÒªµÄ»°¿ÉÒÔ×¢Ê͵ô»òÔÙ¼Ó¸ö²ÎÊýÀ´Ñ¡Ôñ²Ù×÷
insert into @t select ID,ParentID,@i from t_ ......