MySQLÐĵÃ7-1-´æ´¢¹ý³Ì(Îå)

2014-11-24 11:56:24 ¡¤ ×÷Õß: ¡¤ ä¯ÀÀ: 4
±ê¡£½Ó×Å£¬¿ÉÒÔÓÃFETCH CURSORÓï¾ä°Ñ²úÉúµÄ½á¹ûÒ»ÐÐÒ»ÐеضÁÈ¡µ½´æ´¢¹ý³Ì»ò´æ´¢º¯ÊýÖÐÈ¥¡£ÓαêÏ൱ÓÚÒ»¸öÖ¸Õ룬ËüÖ¸Ïòµ±Ç°µÄÒ»ÐÐÊý¾Ý£¬Ê¹ÓÃFETCH CORSORÓï¾ä¿ÉÒÔ°ÑÓαêÒÆ¶¯µ½ÏÂÒ»ÐС£µ±´¦ÀíÍêËùÓеÄÐÐʱ£¬Ê¹ÓÃCLOSECURSORÓï¾ä¹Ø±ÕÕâ¸öÓαꡣ
£¨1£©ÉùÃ÷Óαê
Óï·¨¸ñʽ£ºDECLAREcursor_name cursor for select_statement
˵Ã÷£ºcursor_nameÊÇÓαêµÄÃû³Æ£¬ÓαêÃû³ÆÊ¹ÓÃÓë±íÃûͬÑùµÄ¹æÔò¡£select_statementÊÇÒ»¸öSELECTÓï¾ä£¬·µ»ØµÄÊÇÒ»Ðлò¶àÐеÄÊý¾Ý¡£Õâ¸öÓï¾äÉùÃ÷Ò»¸öÓα꣬Ҳ¿ÉÒÔÔÚ´æ´¢¹ý³ÌÖж¨Òå¶à¸öÓα꣬µ«ÊÇÒ»¸ö¿éÖеÄÿһ¸öÓÎ±ê±ØÐëÓÐΨһµÄÃû×Ö¡£
×¢Ò⣺ÕâÀïµÄSELECT×Ӿ䲻ÄÜÓÐINTO×Ӿ䡣
ÏÂÃæµÄ¶¨Òå·ûºÏÒ»¸öÓαêÉùÃ÷£º
DECLARE XS_CUR1 CURSOR FOR
SELECT ѧºÅ,ÐÕÃû,ÐÔ±ð,³öÉúÈÕÆÚ,×Üѧ·Ö
FROM XS
WHERE רҵÃû = '¼ÆËã»ú';
×¢Ò⣺ÓαêÖ»ÄÜÔÚ´æ´¢¹ý³Ì»ò´æ´¢º¯ÊýÖÐʹÓã¬ÀýÖÐÓï¾äÎÞ·¨µ¥¶ÀÔËÐС£
£¨2£©´ò¿ªÓαê
ÉùÃ÷Óαêºó£¬ÒªÊ¹ÓÃÓαê´ÓÖÐÌáÈ¡Êý¾Ý£¬¾Í±ØÐëÏÈ´ò¿ªÓαꡣÔÚMySQLÖУ¬Ê¹ÓÃOPENÓï¾ä´ò¿ªÓα꣬Æä¸ñʽΪ£ºOPEN cursor_name
ÔÚ³ÌÐòÖУ¬Ò»¸öÓαê¿ÉÒÔ´ò¿ª¶à´Î£¬ÓÉÓÚÆäËûµÄÓû§»ò³ÌÐò±¾ÉíÒѾ­¸üÐÂÁË±í£¬ËùÒÔÿ´Î´ò¿ª½á¹û¿ÉÄܲ»Í¬¡£ www.2cto.com
£¨3£©¶ÁÈ¡Êý¾Ý
Óαê´ò¿ªºó£¬¾Í¿ÉÒÔʹÓÃfetch¡­intoÓï¾ä´ÓÖжÁÈ¡Êý¾Ý¡£
Óï·¨¸ñʽ£ºFETCH cursor_nameINTO var_name [, var_name] ...
˵Ã÷£ºFETCH ...INTOÓï¾äÓëSELECT...INTOÓï¾ä¾ßÓÐÏàͬµÄÒâÒ壬FETCHÓï¾äÊǽ«ÓαêÖ¸ÏòµÄÒ»ÐÐÊý¾Ý¸³¸øÒ»Ð©±äÁ¿£¬×Ó¾äÖбäÁ¿µÄÊýÄ¿±ØÐëµÈÓÚÉùÃ÷ÓαêʱSELECT×Ó¾äÖÐÁеÄÊýÄ¿¡£var_nameÊÇ´æ·ÅÊý¾ÝµÄ±äÁ¿Ãû¡£
£¨4£©¹Ø±ÕÓαê
ÓαêʹÓÃÍêÒÔºó£¬Òª¼°Ê±¹Ø±Õ¡£¹Ø±ÕÓαêʹÓÃCLOSEÓï¾ä£¬¸ñʽΪ£º
CLOSE cursor_nameÓï¾ä²ÎÊýµÄº¬ÒåÓëOPENÓï¾äÖÐÏàͬ¡£
ÀýÈ磺 CLOSE XS_CUR2 ½«¹Ø±ÕÓαêXS_CUR2¡£
Àý£º ´´½¨Ò»¸ö´æ´¢¹ý³Ì£¬¼ÆËãXS±íÖÐÐеÄÊýÄ¿¡£
DELIMITER $$
CREATE PROCEDURE compute (OUT NUMBERINTEGER)
BEGIN
DECLAREXH CHAR(6);
DECLAREFOUND BOOLEAN DEFAULT TRUE;
DECLARENUMBER_XS CURSOR FOR
SELECTѧºÅ FROM XS;
DECLARECONTINUE HANDLER FOR NOT FOUND
SETFOUND=FALSE;
SETNUMBER=0;
OPENNUMBER_XS;
FETCHNUMBER_XS INTO XH;
www.2cto.com
WHILEFOUND DO
SETNUMBER=NUMBER+1;
FETCHNUMBER_XS INTO XH;
ENDWHILE;
CLOSENUMBER_XS;
END$$
DELIMITER ;

×÷Õß tianyazaiheruan