游標的使用實例(Sqlserver版本)


游標,如果是之前給我說這個概念,我的腦子有二個想法:1、你牛;2、我不會

不會不是理由,更不是借口,於是便要學習,本人屬性喜歡看代碼,不喜歡看書的人,所以嘛,文字對我沒有吸引力;閑話少說啊,給大家提供一個我寫的例子,先讓大家用起來的,並且知道如何用的啊,想要深究,不要問我啊,自己看書去。。。

游標,作為java人員,最好的理解就是java中的List,只是數據庫有點懶,沒有過多的對他管理,要自己打開,關閉,釋放資源而已

 Demo1:

declare mycur cursor for    ---申明游標mycur
select name from t_stu

open mycur    ---打開游標
---操作內容
close mycur    ---關閉游標

deallocate mycur   ---釋放資源

上邊的一個Demo只是告訴大家游標的一些基本指令,其實沒啥用,要在函數中,存儲過程中使用游標才真的有用類,接下來,請看Demo2:    

-->這個函數主要實現的功能是,傳入表名,將該表的所有的列,拼成字符串返回回來。

create function [dbo].[getCols]
( @table_name AS varchar(50) 
)
RETURNS varchar(2000)
AS
BEGIN
  DECLARE @colname VARCHAR(50)
  DECLARE @typename VARCHAR(50)
  DECLARE @result varchar(2000)  
  set @result = ''
  DECLARE mycur CURSOR FOR     ---定義游標
    select c.name as columnname,ty.name as typename
        from sys.columns c 
        inner join sys.tables t on t.object_id=c.object_id
        inner join sys.types ty on ty.system_type_id=c.system_type_id
        where t.name = @table_name and ty.name !='sysname'        ---傳入參數@table_name
        order by t.name,c.column_id

    OPEN mycur       ---打開游標
    FETCH NEXT FROM mycur into        ----獲取下一條數據
    @colname,@typename                ----將獲取的數據保存到變量中
    
    WHILE @@FETCH_STATUS = 0         ----返回上次執行Fetch命令的狀態,0:成功 -1:失敗 -2:被提取的行不存在
        BEGIN
            if @result = null or @result = ''
            begin
               SET @result = @colname
            end
            else
            begin
               SET @result = @result + ',' + @colname    
            end
        FETCH NEXT FROM mycur into    ---獲取下一條數據
              @colname,@typename 
        END
    CLOSE mycur       ---關閉游標
        DEALLOCATE mycur   ----釋放資源
  RETURN @result
END

 


免責聲明!

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



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