SQL SERVER ²Î¿¼£ºÓαê(Cursor)µÄ½²½âÓëʵÀý
ÔÚÊý¾Ý¿âÖУ¬ÓαêÊÇÒ»¸öÊ®·ÖÖØÒªµÄ¸ÅÄî¡£ÓαêÌṩÁËÒ»ÖÖ¶Ô´Ó±íÖмìË÷³öµÄÊý¾Ý½øÐвÙ×÷µÄÁé»îÊֶΣ¬¾Í±¾ÖʶøÑÔ£¬Óαêʵ¼ÊÉÏÊÇÒ»ÖÖÄÜ´Ó°üÀ¨¶àÌõÊý¾Ý¼Ç¼µÄ½á¹û¼¯ÖÐÿ´ÎÌáȡһÌõ¼Ç¼µÄ»úÖÆ¡£Óαê×ÜÊÇÓëÒ»ÌõT_SQL Ñ¡ÔñÓï¾äÏà¹ØÁª£¬ÒòΪÓαêÓɽá¹û¼¯£¨¿ÉÒÔÊÇÁãÌõ¡¢Ò»Ìõ»òÓÉÏà¹ØµÄÑ¡ÔñÓï¾ä¼ìË÷³öµÄ¶àÌõ¼Ç¼£©ºÍ½á¹û¼¯ÖÐÖ¸ÏòÌØ¶¨¼Ç¼µÄÓαêλÖÃ×é³É¡£
µ±¾ö¶¨¶Ô½á¹û¼¯½øÐд¦Àíʱ£¬±ØÐëÉùÃ÷Ò»¸öÖ¸Ïò¸Ã½á¹û¼¯µÄÓαꡣÈç¹ûÔø¾Óà C ÓïÑÔд¹ý¶ÔÎļþ½øÐд¦ÀíµÄ³ÌÐò£¬ÄÇôÓαê¾ÍÏñÄú´ò¿ªÎļþËùµÃµ½µÄÎļþ¾ä±úÒ»Ñù£¬Ö»ÒªÎļþ´ò¿ª³É¹¦£¬¸ÃÎļþ¾ä±ú¾Í¿É´ú±í¸ÃÎļþ¡£¶ÔÓÚÓÎ±ê¶øÑÔ£¬ÆäµÀÀíÊÇÏàͬµÄ¡£¿É¼ûÓαêÄܹ»ÊµÏÖ°´Ó봫ͳ³ÌÐò¶ÁÈ¡Æ½ÃæÎļþÀàËÆµÄ·½Ê½´¦ÀíÀ´×Ô»ù´¡±íµÄ½á¹û¼¯£¬´Ó¶ø°Ñ±íÖÐÊý¾ÝÒÔÆ½ÃæÎļþµÄÐÎʽ³ÊÏÖ¸ø³ÌÐò¡£
ÎÒÃÇÖªµÀ¹ØÏµÊý¾Ý¿â¹ÜÀíϵͳʵÖÊÊÇÃæÏò¼¯ºÏµÄ£¬ÔÚMS SQL SERVER Öв¢Ã»ÓÐÒ»ÖÖÃèÊö±íÖе¥Ò»¼Ç¼µÄ±í´ïÐÎʽ£¬³ý·ÇʹÓÃwhere ×Ó¾äÀ´ÏÞÖÆÖ»ÓÐÒ»Ìõ¼Ç¼±»Ñ¡ÖС£Òò´ËÎÒÃDZØÐë½èÖúÓÚÓαêÀ´½øÐÐÃæÏòµ¥Ìõ¼Ç¼µÄÊý¾Ý´¦Àí¡£
Óɴ˿ɼû£¬ÓαêÔÊÐíÓ¦ÓóÌÐò¶Ô²éѯÓï¾äselect ·µ»ØµÄÐнá¹û¼¯ÖÐÿһÐнøÐÐÏàͬ»ò²»Í¬µÄ²Ù×÷£¬¶ø²»ÊÇÒ»´Î¶ÔÕû¸ö½á¹û¼¯½øÐÐͬһÖÖ²Ù×÷£»Ëü»¹Ìṩ¶Ô»ùÓÚÓαêλÖöø¶Ô±íÖÐÊý¾Ý½øÐÐɾ³ý»ò¸üеÄÄÜÁ¦£»¶øÇÒ£¬ÕýÊÇÓαê°Ñ×÷ÎªÃæÏò¼¯ºÏµÄÊý¾Ý¿â¹ÜÀíϵͳºÍÃæÏòÐеijÌÐòÉè¼ÆÁ½ÕßÁªÏµÆðÀ´£¬Ê¹Á½¸öÊý¾Ý´¦Àí·½Ê½Äܹ»½øÐйµÍ¨¡£
ÿһ¸öÓÎ±ê±ØÐëÓÐËĸö×é³É²¿·ÖÕâËĸö¹Ø¼ü²¿·Ö±ØÐë·ûºÏÏÂÃæµÄ˳Ðò£»
1.DECLARE Óαê
2.OPEN Óαê
3.´ÓÒ»¸öÓαêÖÐFETCH ÐÅÏ¢
4.CLOSE »òDEALLOCATE Óαê
ͨ³£ÎÒÃÇʹÓÃDECLARE À´ÉùÃ÷Ò»¸öÓαêÉùÃ÷Ò»¸öÓαêÖ÷Òª°üÀ¨ÒÔÏÂÖ÷ÒªÄÚÈÝ£º
ÓαêÃû×Ö
Êý¾ÝÀ´Ô´£¨±íºÍÁУ©
ѡȡÌõ¼þ
ÊôÐÔ£¨½ö¶Á»ò¿ÉÐ޸ģ©
ÆäÓï·¨¸ñʽÈçÏ£º
DECLARE cursor_name [INSENSITIVE] [SCROLL] CURSOR
FOR select_statement
[FOR {READ ONLY | UPDATE [OF column_name [,...n]]}]
ÆäÖУº
cursor_name Ö¸ÓαêµÄÃû×Ö¡£
INSENSITIVE
±íÃ÷MS SQL SERVER »á½«Óα궨ÒåËùѡȡ³öÀ´µÄÊý¾Ý¼Ç¼´æ·ÅÔÚÒ»ÁÙʱ±íÄÚ£¨½¨Á¢ÔÚtempdb Êý¾Ý¿âÏ£©¡£¶Ô¸ÃÓαêµÄ¶ÁÈ¡²Ù×÷½ÔÓÉÁÙʱ±íÀ´Ó¦´ð¡£Òò´Ë£¬¶Ô»ù±¾±íµÄÐ޸IJ¢²»Ó°ÏìÓαêÌáÈ¡µÄÊý¾Ý£¬¼´Óα겻»áËæ×Å»ù±¾±íÄÚÈÝµÄ¸Ä±ä¶ø¸Ä±ä£¬Í¬Ê±Ò²ÎÞ·¨Í¨¹ýÓαêÀ´¸üлù±¾±í¡£Èç¹û²»Ê¹Óøñ£Áô×Ö£¬ÄÇô¶Ô»ù±¾±íµÄ¸üС¢É¾³ý¶¼»á·´Ó³µ½ÓαêÖС£
ÓαêÖ¸ÕëʾÒâͼ
Ïêϸ£º
1.¶¨ÒåÒ»¸ö±ê×
Ïà¹ØÎĵµ£º
create PROCEDURE pagelist
@tablename nvarchar(50),
@fieldname nvarchar(50)='*',
@pagesize int output,--ÿҳÏÔʾ¼Ç¼ÌõÊý
@currentpage int output,--µÚ¼¸Ò³
@orderid nvarchar(50),--Ö÷¼üÅÅÐò
@sort int,--ÅÅÐò·½Ê½£¬1±íʾÉýÐò£¬0±íʾ½µÐòÅÅÁÐ
......
¡¡¡¡º¯ÊýÊÇÒ»ÖÖÓÐÁã¸ö»ò¶à¸ö²ÎÊý²¢ÇÒÓÐÒ»¸ö·µ»ØÖµµÄ³ÌÐò¡£ÔÚSQLÖÐOracleÄÚ½¨ÁËһϵÁк¯Êý£¬ÕâЩº¯Êý¶¼¿É±»³ÆÎªSQL»òPL/SQLÓï¾ä£¬º¯ÊýÖ÷Òª·ÖΪÁ½´óÀࣺ
¡¡¡¡ µ¥Ðк¯Êý
¡¡¡¡ ×麯Êý
¡¡¡¡±¾ÎĽ«ÌÖÂÛÈçºÎÀûÓõ¥Ðк¯ÊýÒÔ¼°Ê¹ÓùæÔò¡£
¡¡¡¡SQLÖеĵ¥Ðк¯Êý
¡¡¡¡SQLºÍPL/SQLÖÐ×Ô´øºÜ¶àÀàÐ͵ĺ¯Êý£¬ÓÐ×Ö·û¡¢Êý×Ö¡¢ÈÕÆÚ¡ ......
Èç¹ûÊÇÀàËÆ"select * from user where uid="+uid +" and pwd="+pwd ºÜÈÝÒ׳öÎÊÌâ
ʹÓà SQLParamenter
°ÑÄãµÄSQLÓï¾äд³É ÀàËÆ´æ´¢¹ý³Ì ......
select * from formtable_main_20
sp_help formtable_main_20
--drop view zcountQJ01
create view zcountQJ01
as
select appman ,year(startdata) as zyear,jb,cast(sum(num) as decimal(4,1) ) as num
from formtable_main_20
where year(getdate()) = year(startdata)
group by appman,jb,year(startdata) ......
--´ÓExcelÎļþÖÐ,µ¼ÈëÊý¾Ýµ½SQLÊý¾Ý¿âÖÐ,ºÜ¼òµ¥,Ö±½ÓÓÃÏÂÃæµÄÓï¾ä:
/*===================================================================*/
--Èç¹û½ÓÊÜÊý¾Ýµ¼ÈëµÄ±íÒѾ´æÔÚ
insert into ±í select * from
OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)
--Èç ......