• 数据库存储过程游标函数


    一、存储过程
       SQL99标准提出的SQL-invoked-rountines的概念,它开分为存储过程与函数,这里首先介绍存储过程
       存储过程分为三类:系统存储过程(如:sp_help)、自定义存储过程、扩展存储过程
       存储过程可以理解为一个SQL语句块,完成一些复杂的功能,当然可以包含应用程序的业务,比如:分页,生成订单号等,存储过程可以接收应用程序传递的参数,并将查询的结果返回给应用程序
      1、存储过程的优点:
        1)、运行效率高,因为存储过程不会在每一次调用时都解释执行,随便说一句,SQL执行后的执行计划会放在缓存中,这样下一次相同的SQL执行就不用再次优化了,从而加快速度
        2)、存储过程降低了客户机与服务器的通信量,使用存储过程,就不用在应程序中拼SQL传回服务器,只须要存储过程名与参数就可以了
        3)、方便实施企业规则,可以在存储过程里加入业务逻辑
      2、存储过程的使用(重复使用)
        创建:

      create proc pc_whc
       as
       select * from whc
       /*执行*/
       exec pc_whc
    

    二、游标
        游标可以理解为一个"指针",其指向的是一条记录,当用select语句得到一个结果集时,我们可以将它放到一个游标中,然后通过移动游标来读取每一条数据,并进行处理,感觉有点"遍历"数据
    游标的使用:
    1、 定义游标:declare cursor_name cursor
                       For select 语句;
    2、 打开游标:open cursor_name
    3、 循环访问游标中的每一行数据:
    Fetch next from cursor_name into @参数列表
    4、 游标的状态:@@fetch_status,用于判断游标fetch的状态,当为0时正常,不为一时异常
    5、关闭并释放资源
    例:

    declare @whcId nchar(5),@whc int;
    /*定义一个游标*/
    declare whc_cursor cursor 
    for select CustomerID,EmployeeID from dbo.Orders
    /*打开一个游标*/
    open whc_cursor
    /*移动指针,将数据放到变量中*/
    fetch next from whc_cursor into @whcId,@whc
    while @@fetch_status = 0
    begin 
     print @whcid+' '+convert(nchar(5),@whc)
    fetch next from whc_cursor  into @whcId,@whc
    end
    close whc_cursor
    deallocate whc_cursor
    

    三、函数
    函数相信大家都很清楚了,传递参数,然后返回一个结果,SQL中的函数也大致差不多,返回时使用ruturn,可以是int、varchar,table等类型,有了函数就可以把一些功能在一起,比如对数据的处理等
    函数的创建(例子说明):

    create function fun_whc(
    @str varchar(50)
    )
    returns varchar(100)
    as
    begin 
       declare @List varchar(200) 
       set @List=@str+'My friend'
    --返回值
       return @List
    end
    --调用
    select DemoName,dbo.fun_whc(DemoName) from whc

      最后要说明的是,小弟初学,哪里有不对的请指出,感激不尽!!!

  • 相关阅读:
    ftp 传文件完整代码(二)
    生成文件 权限 以及ftp 传数据(一)
    定时任务配置
    发送电子邮件遇到问题
    mysql 主从分离配置
    知道开始时间结束时间 计算这之间一共多少天
    mysql 语句集(二)
    mysql 的sql文件导出导入
    mysql 批量添加 更新
    Spring Boot中如何干掉if else
  • 原文地址:https://www.cnblogs.com/xin_ny/p/sql_proc_function.html
Copyright © 2020-2023  润新知