sql server 遊標 示例代碼 路徑表示法

Mark jiaguoxinzhi linyee

因爲sql用得少,,經常會忘記怎麼寫。。

找得多了,,不如自己整個簡單的標例,備忘。

 

declare @chlid bigint  --定義變量用於保存遊標對應記錄的值
declare @pPath varchar --定義變量
declare cur2 cursor for select channelid,ChannelPath from dbo.Channel where ChannelDeep=2 --遊標指向記錄集
open cur2 --打開
    fetch next from cur2 into @chlid,@pPath --獲取下一句,,
    while @@FETCH_STATUS=0 --狀態未結束?
    begin
        --print @chlid
        --print @pPath
        update dbo.Channel set ChannelDeep=3,ChannelPath=@pPath+CAST(ChannelParent as varchar(20))+'/' where ChannelParent=@chlid --執行更新
        fetch next from cur2 into @chlid,@pPath --繼續獲取下一句
    end
close cur2 --關閉
deallocate cur2 --釋放

路徑中含本身

--UPDATE [dbo].[Channel]   SET [ChannelDeep] = 0 ,[ChannelPath] ='/'+CAST(ChannelId as varchar(20))+'/' WHERE ChannelParent=0

declare @chlid bigint  --定義變量用於保存遊標對應記錄的值
declare @pPath varchar --定義變量
declare cur1 cursor for select channelid,ChannelPath from dbo.Channel where ChannelDeep=2 --遊標指向記錄集
open cur1 --打開
    fetch next from cur1 into @chlid,@pPath --獲取下一句,,
    while @@FETCH_STATUS=0 --狀態未結束?
    begin
        --print @chlid
        --print @pPath
        update dbo.Channel set ChannelDeep=3,ChannelPath=@pPath+CAST(ChannelId as varchar(20))+'/' where ChannelParent=@chlid --執行更新
        fetch next from cur1 into @chlid,@pPath --繼續獲取下一句
    end
close cur1 --關閉
deallocate cur1 --釋放
GO

再完善點點

declare @chlid bigint  --定義變量用於保存遊標對應記錄的值
declare @pPath varchar(255) --定義變量


SET nocount ON                   --忽略行數顯示

declare cur1 cursor  --聲明遊標
for select channelid,ChannelPath from dbo.Channel where ChannelDeep=3 --遊標指向記錄集
open cur1 --打開

    fetch next from cur1 into @chlid,@pPath --獲取下一句,,
    while @@FETCH_STATUS=0 --狀態未結束?
    begin
        print @chlid
        print @pPath
        update dbo.Channel set ChannelDeep=4,ChannelPath=@pPath+CAST(ChannelId as varchar(20))+'/' where ChannelParent=@chlid --執行更新
        fetch next from cur1 into @chlid,@pPath --繼續獲取下一句
    end
close cur1 --關閉
deallocate cur1 --釋放

SET nocount OFF      --打開計數

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章