From 48755aa1488db4f9925c11a5e450d4e605f1350e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=86=E5=88=A9=E7=BE=A4?= <2246026162@qq.com> Date: Thu, 6 Oct 2022 19:36:02 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AC=AC=E4=B9=9D=E6=AC=A1=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../2022-09-30\346\270\270\346\240\207.sql" | 48 ++++++++++++++++++ .../2022-09-30\346\270\270\346\240\207.md" | 50 +++++++++++++++++++ 2 files changed, 98 insertions(+) create mode 100644 "32\351\231\206\345\210\251\347\276\244/\344\275\234\344\270\232/2022-09-30\346\270\270\346\240\207.sql" create mode 100644 "32\351\231\206\345\210\251\347\276\244/\347\254\224\350\256\260/2022-09-30\346\270\270\346\240\207.md" diff --git "a/32\351\231\206\345\210\251\347\276\244/\344\275\234\344\270\232/2022-09-30\346\270\270\346\240\207.sql" "b/32\351\231\206\345\210\251\347\276\244/\344\275\234\344\270\232/2022-09-30\346\270\270\346\240\207.sql" new file mode 100644 index 0000000..dc24bff --- /dev/null +++ "b/32\351\231\206\345\210\251\347\276\244/\344\275\234\344\270\232/2022-09-30\346\270\270\346\240\207.sql" @@ -0,0 +1,48 @@ +select* from Department +select * from People +--例3:使用游标实现加薪操作 +declare cur_id cursor scroll for select PeopleId from people +open cur_id +declare @money money=1000,@id int +fetch first from cur_id into @id +while (@@FETCH_STATUS =0) +begin + update People set PeopleSalary+=@money where PeopleId=@id + fetch next from cur_id into @id +end +close cur_id +select* from People +go +--例4:使用游标删除不达标员工 +select * from People +declare cur_id cursor scroll for select PeopleId,PeopleSalary from People +open cur_id +declare @id int, @money money +fetch first from cur_id into @id,@money +while(@@FETCH_STATUS = 0) + begin + if(@money < 10000) + begin + delete People where PeopleId = @id + fetch next from cur_id into @id,@money + end + else + fetch next from cur_id into @id,@money + end +close cur_id +go +--使用游标 实现:如果A表与B表中ID字段值相同,那么将B表中的省份,城市 修改成与A表中的城市一致(连表) +select * from A +select * from B + +declare cur_abc cursor scroll for select A.* from A inner join B on A.id=B.id +open cur_abc +declare @id int,@province varchar(10),@city varchar(10) +fetch first from cur_abc into @id,@province,@city +while(@@FETCH_STATUS=0) +begin + update B set Province= @province,City=@city where id=@id + fetch next from cur_abc into @id,@province,@city +end +close cur_abc +go \ No newline at end of file diff --git "a/32\351\231\206\345\210\251\347\276\244/\347\254\224\350\256\260/2022-09-30\346\270\270\346\240\207.md" "b/32\351\231\206\345\210\251\347\276\244/\347\254\224\350\256\260/2022-09-30\346\270\270\346\240\207.md" new file mode 100644 index 0000000..b64503a --- /dev/null +++ "b/32\351\231\206\345\210\251\347\276\244/\347\254\224\350\256\260/2022-09-30\346\270\270\346\240\207.md" @@ -0,0 +1,50 @@ +### 娓告爣 + +#### 1.娓告爣鍒嗙被 + +锛1锛夐潤鎬佹父鏍(Static)锛氬湪鎿嶄綔娓告爣鐨勬椂鍊欙紝鏁版嵁鍙戠敓鍙樺寲锛屾父鏍囦腑鏁版嵁涓嶅彉 锛2锛夊姩鎬佹父鏍(Dynamic)锛氬湪鎿嶄綔娓告爣鐨勬椂鍊欙紝鏁版嵁鍙戠敓鍙樺寲锛屾父鏍囦腑鏁版嵁鏀瑰彉锛岄粯璁ゅ笺 锛3锛夐敭闆嗛┍鍔ㄦ父鏍(KeySet)锛氬湪鎿嶄綔娓告爣鐨勬椂鍊欙紝琚爣璇嗙殑鍒楀彂鐢熸敼鍙橈紝娓告爣涓暟鎹敼鍙橈紝鍏朵粬鍒楁敼鍙橈紝娓告爣涓暟鎹笉鍙樸 + +#### 2.娓告爣鐨勪娇鐢 + +**鍒涘缓娓告爣锛** + +``` +--1.鍒涘缓娓告爣(Scroll浠h〃婊氬姩娓告爣锛屼笉鍔燬croll鍒欐槸鍙繘鐨勶紝鍙兘鏀寔fetch next) +declare <娓告爣鍚> cursor scroll for select stuname from stuinfo +``` + +**鎵撳紑娓告爣锛** + +``` +open <娓告爣鍚> +``` + +**鍏抽棴娓告爣锛** + +``` +close <娓告爣鍚> +``` + +##### 閲婃斁娓告爣锛 + +``` +deallocate <娓告爣鍚> +``` + +**鍒犻櫎娓告爣锛** + +``` +deallocate <娓告爣鍚> +``` + +**鎻愬彇鏁版嵁鎿嶄綔锛** + +``` +fetch first from <娓告爣鍚> --缁撴灉闆嗙殑绗竴琛 +fetch last from <娓告爣鍚> --鏈鍚庝竴琛 +fetch absolute 1 from <娓告爣鍚> --浠庢父鏍囩殑绗竴琛屽紑濮嬫暟锛岀n琛屻 +fetch relative 3 from <娓告爣鍚> --浠庡綋鍓嶄綅缃暟锛岀n琛屻 +fetch next from <娓告爣鍚> --褰撳墠浣嶇疆鐨勪笅涓琛 +fetch prior from <娓告爣鍚> --褰撳墠浣嶇疆鐨勪笂涓琛 +@@fetch_status --0:杩樻湁涓嬩竴琛 -1锛氭彁鍙栧け璐 -2锛氭彁鍙栫┖鐧借 +``` \ No newline at end of file -- Gitee