游标的使用实例(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

 

转载于:https://www.cnblogs.com/xiaotao726/p/4713156.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值