sql游標的使用與exec的兩種用法


1.exec的用法

(1).執行存儲過程:exec 存儲過程名 參數

1 exec myprocdure @code="Z0001" 
3 exec myprocdure '2019/01/01''2019/10/01','Z0001'

(2).動態執行sql語句:用圓括號(),不能帶輸入,輸出參數

1 exec ( 'Insert #exl( code ) Select code From excode '

2.sql中游標的使用

游標是一種處理數據的方法,主要用於存儲過程,觸發器和T-SQL語句中,他們的結果集可用於其他的T-SQL語句。可以查看或處理結果集中向前或向后瀏覽數據的功能。

1.游標可以從多條數據的結果集中每次提取一條數據

2.可以對select返回的結果集中每次執行相同或不同的操作

3.保存查詢結果。方便以后使用 ,游標的結果由select語句產生,如果處理過程需要重復使用一個記錄集,那么創建一次游標而重復使用若干次,比重復查詢數據庫要快的多。

游標主要包括結果集和游標位置兩部分,游標結果集是定義游標的select語句返回的行集合,游標位置是指向這個結果集中的某一行的指針,因此,若要對結果集進行逐條單獨處理時,需聲明一個指向該結果集中的游標變量

1.游標變量的聲明:declare @cursor cursor

2.聲明游標:declare 游標名 cursor

3.創建游標:declare 游標名 cursor for select 語句

4.fetch next from 游標名 into 游標變量   -- 將游標向下移一行,將獲取到的數據放入之前定義的游標變量中

5.while @@fetch_status=0  -- 判斷fetch語句是否執行成功

6.關閉游標:close 游標名

7.釋放游標:deallocate 游標名
1 fetch next from namecursor into @cursor
2 while @@ @@fetch_status = 0
3 BEGIN
4        sql語句
5        fetch next from namecursor into @cursor
6 END
7 
8 -- 注意: 用兩次 “FETCH NEXT FROM ” 是因為,第一次只是用來判斷 @@FETCH_STATUS的,后面一次 “FETCH NEXT FROM ” 才是 loop用到的,也就是后面一次 是在 BEGIN END之間,是被反復執行的。每次讀取一行。

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM