SQLÊý¾Ý¿â
CURSOR
==================================
l SQL ÓαêCURSORµÄʹÓÃ
ʹÓÃÆðÀ´ºÜ¼òµ¥£¬Ïȶ¨Ò壬Ȼºó¸³¸öÖµ£¬´ò¿ª£¬Í¨¹ýWhile Loop Ò»¸öÒ»¸ö¶ÁÏÂÈ¥£¬×îºó¹Ø±Õ£¬ÊÍ·ÅÄÚ´æ¡£»ù±¾Ì×·ÈçÏ£º
DECLARE MyCursor cursor /* ÉùÃ÷Óα꣬ĬÈÏΪµ¥´¿ÏòǰµÄÓαꡣÈç¹ûÏëҪǰºóÌøÀ´ÌøÈ¥µÄ£¬Ð´³ÉScroll Cursor¼´¿É */
FOR
SELECT Column1, Column2 from ijij±í
Where ijijÌõ¼þ
OPEN MyCursor /* ´ò¿ªÓαê */
FETCH NEXT from MyCursor Into @A, @B /* ¶ÁÈ¡µÚ1ÐÐÊý¾Ý*/
WHILE @@FETCH_STATUS = 0 /* ÓÃWHILEÑ»·¿ØÖÆÓαê */
BEGIN /*BEGIN-END ¿é*/
//ÔÚÕâÀï,ÓÃ@A,@B×öµãÊÂ,»òÕ߸ÄÒ»¸ÄֵʲôµÄ.
FETCH NEXT from MyCursor Into @A, @B /* ×¥ÏÂÒ»ÐÐ */
END
CLOSE MyCursor /* ¹Ø±ÕÓαê */
DEALLOCATE MyCursor /* ɾ³ýÓαê,ÊÍ·ÅÄÚ´æ */
ÉùÃ÷Óαê///////////////////////
USE pubs
GO
DECLARE authors_cursor CURSOR FOR
SELECT au_id,au_fname,au_lname
from authors
GO
USE pubs
GO
DECLARE authors_cursor1 CURSOR FOR
SELECT au_id,au_fname,au_lname
from authors
FOR READ ONLY
GO
USE pubs
GO
DECLARE authors_cursor2 CURSOR FOR
SELECT au_id,au_fname,au_lname
from authors
FOR UPDATE
GO
´ò¿ªÓαê////////////
DECLARE mancursor CURSOR FOR
SELECT *
from db_manpowerinfo.dbo.ÈËʱí
WHERE 񅧏='00019'
OPEN mancursor
FETCH NEXT from mancursor
CLOSE mancursor
¶ÁÈ¡ÓαêÖеÄÊý¾Ý/////////////////////
DECLARE mancursor1 CURSOR FOR
SELECT ±àºÅ,ÐÕÃû,ÐÔ±ð,Éí·ÝÖ¤ºÅ
from db_manpowerinfo.dbo.ÈËʱí
OPEN mancursor1
FETCH NEXT from mancursor1
WHILE @@FETCH_STATUS=0
BEGIN
FETCH NEXT from mancursor1
END
CLOSE mancursor1
DEALLOCATE mancursor1
¹Ø±Õ²¢ÊÍ·ÅÓαê//////////////////
USE ÏúÊÛ¹ÜÀíϵͳ
GO
DECLARE mycursor CURSOR FOR
SELECT ¿Í»§È«³Æ,count(*) as ÏúÊۼǼÊý,sum(ÊýÁ¿)as ÏúÊÛÊýÁ¿ from ÏúÊÛ±í WHERE ÊýÁ¿ >100 Group BY ¿Í»§È«³Æ
OPEN mycursor
FETCH NEXT from mycursor
WHILE @@FETCH_STATUS = 0 -- ÅжÏÊÇ·ñ»¹ÓÐÐëÒª¶ÁÈ¡µÄ¼Ç¼
BEGIN
FETCH NEXT from mycursor --¶ÁÈ¡¼Ç¼µ½Óαê
END
CLOSE mycursor
DEALLOCATE mycurso
Ïà¹ØÎĵµ£º
1.Ñ¡Ôñ×îÓÐЧÂʵıíÃû˳Ðò(Ö»ÔÚ»ùÓÚ¹æÔòµÄÓÅ»¯Æ÷ÖÐÓÐЧ)¡¡¡¡
¡¡¡¡ SQLSERVERµÄ½âÎöÆ÷°´ÕÕ´ÓÓÒµ½×óµÄ˳Ðò´¦Àífrom×Ó¾äÖеıíÃû£¬Òò´Ëfrom×Ó¾äÖÐдÔÚ×îºóµÄ±í£¨»ù´¡±ídriving table£©½«±»×îÏÈ´¦Àí£¬ÔÚfrom×Ó¾äÖаüº¬¶à¸ö±íµÄÇé¿öÏ£¬±ØÐëÑ¡Ôñ¼Ç¼ÌõÊý×îÉٵıí×÷Ϊ»ù´¡±í£¬µ±SQLSERVER´¦Àí¶à¸ö±íʱ£¬»áÔËÓÃÅÅÐò¼°ºÏ²¢µÄ·½Ê½Á ......
ÓÃPL/SQL Deleveloperµ¼³öcsvÎļþ¸ñʽÊý¾Ý£¬ÓÃexcel´ò¿ªÊÇÂÒÂ룬ÓüÇʱ¾´ò¿ªÕý³££¬Ôõô»ØÊ£¿
ÂíÉÏGoogle£¬ÔÀ´µ¼³öµÄÎļþµÄ±àÂë¸ñʽÊÇUTF-8ºÍ¶øexcelĬÈÏ´ò¿ªÎļþµÄ±àÂëÊÇunicode£¬ÓÚÊÇ£º
1¡¢ÓüÇʱ¾´ò¿ªÎļþ£¬È»ºóÁí´æÎª£¬ÌîдÎļþÃû£¬Ñ¡Ôñ±àÂë¸ñʽΪunicode
2¡¢ÓÃexcel´ò¿ªÐµÄÎļþ£¬Õý³£ÏÔʾ
µ«ÊdzöÏÖÁíÍâµÄÎÊÌ⣠......
Oracle ¶¯Ì¬SQL·µ»Øµ¥Ìõ½á¹ûºÍ½á¹û¼¯
1. DDL ºÍ DML
/**//*** DDL ***/
begin
EXECUTE IMMEDIATE 'drop table temp_1';
EXECUTE IMMEDIATE 'create table temp_1(name varchar2(8))';
end;
/**//*** DML ***/
declare
v_1 varchar2(8);
& ......
ÔÚѧϰSQLʱ¿´µ½µÄһƬºÜºÃµÄÎÄÕ£¬ÌØÌù³öÀ´ºÍ´ó¼ÒÒ»Æð·ÖÏí£¡
ÎÒÃÇÒª×öµ½²»µ«»áдSQL,»¹Òª×öµ½Ð´³öÐÔÄÜÓÅÁ¼µÄSQLÓï¾ä¡£
£¨1£©Ñ¡Ôñ×îÓÐЧÂʵıíÃû˳Ðò(Ö»ÔÚ»ùÓÚ¹æÔòµÄÓÅ»¯Æ÷ÖÐÓÐЧ)£º
OracleµÄ½âÎöÆ÷°´ÕÕ´ÓÓÒµ½×óµÄ˳Ðò´¦Àífrom×Ó¾äÖеıíÃû£¬from×Ó¾äÖÐдÔÚ×îºóµÄ±í(»ù´¡±í driving table)½«±»×îÏÈ´¦ ......
£¨18£©ÓÃEXISTSÌæ»»DISTINCT£º
µ±Ìá½»Ò»¸ö°üº¬Ò»¶Ô¶à±íÐÅÏ¢(±ÈÈ粿ÃűíºÍ¹ÍÔ±±í)µÄ²éѯʱ,±ÜÃâÔÚSELECT×Ó¾äÖÐʹÓÃDISTINCT¡£Ò»°ã¿ÉÒÔ¿¼ÂÇÓÃEXISTÌæ»», EXISTS ʹ²éѯ¸üΪѸËÙ,ÒòΪRDBMSºËÐÄÄ£¿é½«ÔÚ×Ó²éѯµÄÌõ¼þÒ»µ©Âú×ãºó,Á¢¿Ì·µ»Ø½á¹û¡£Àý×Ó£º
(µÍЧ):
SELECT DISTINCT DEPT_NO,DEPT_NAME  ......