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

  create proc pc_whcasselect * 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

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

转载于:https://www.cnblogs.com/xin_ny/archive/2011/09/25/sql_proc_function.html

数据库-存储过程-游标-函数相关推荐

  1. MySQL 案例实战--MySQL数据库 存储过程 存储函数

    MySQL数据库 存储过程 & 存储函数 前言 一.什么是存储过程 & 存储函数 二.存储过程的创建和调用 三.存储函数的创建和调用 前言 本环境是基于 Centos 7.8 系统构建 ...

  2. 数据库 存储过程和函数

    存储过程和函数的引入 存储过程和函数是在数据库中定义一些 SQL 语句的集合,然后直接调用这些存储过程和函数来执行已经定义好的 SQL 语句.存储过程和函数可以避免开发人员重复的编写相同的 SQL 语 ...

  3. mysql存储过程输入参数拆分_一文看懂mysql数据库存储过程、函数、视图、触发器、表...

    概述 抽空总结一下mysql的一些概念性内容,涉及存储过程.函数.视图.触发器等. 一.查看存储过程.函数.视图.触发器.表 1.存储过程 select * from mysql.proc where ...

  4. mysql 存储过程游标删除_mysql数据库存储过程游标循环,提前退出

    需求:向trade这个数据库中的每一个表增加多个字段 遇到问题:存储过程,游标,循环,动态sql执行 注意: mysql 存储过程在我所使用的5.5版本中不能使用 show 的命令,利用 inform ...

  5. mysql 过程和函数 变量的值_MySQL数据库提升篇-----存储过程和函数

    day06 MySQL数据库存储过程和函数 一.存储过程和函数的概述: 数据库的存储过程和存储函数是指在数据库中定义的一些sql语句的集合,直接调用这些存储过程的名字或存储函数的名字就可以直接使用这些 ...

  6. MySql基础篇---004 其它数据库对象篇:视图,存储过程与函数,变量、流程控制与游标 ,触发器

    第14章_视图 讲师:尚硅谷-宋红康(江湖人称:康师傅) 官网:http://www.atguigu.com 1. 常见的数据库对象 对象 描述 表(TABLE) 表是存储数据的逻辑单元,以行和列的形 ...

  7. oracle数据库存储函数,Oracle数据库存储过程

    一.定义 所谓存储过程,就是一组用于完成特定数据库功能的SQL语句集,该SQL语句集经过编译后存储在数据库系统中.使用的时候,用户通过指定已经定义的存储过程名字并给相应的存储过程参数来调用并执行它,从 ...

  8. mysql函数 游标_存储过程/游标/mysql 函数

    存储过程和函数(存储在 mysql数据库中的 proc表,所以检查有没有这个表) 存储过程是一种存储程序(如正规语言里的子程序一样),mysql支持有两种:存储过程,在其他SQL语句中可以返回值的函数 ...

  9. 【梳理】数据库系统概论 第8章 数据库编程 8.1 嵌入式SQL 8.2 过程化SQL 8.3 存储过程和函数 8.4 ODBC编程

    教材:王珊 萨师煊 编著 数据库系统概论(第5版) 高等教育出版社 注:文档高清截图在后 第8章 数据库编程 标准SQL是非过程化的查询语言,操作统一.面向集合.功能丰富.使用简单.非过程化语言是相对 ...

最新文章

  1. win10 spark+scala+eclipse+sbt 安装配置
  2. eclipse添加缺失的包/src/main/resource
  3. HTML标签详解之格式标签
  4. 网络基础——知识生活化会变得如此简单
  5. Keras之MLPR:利用MLPR算法(3to1【窗口法】+【Input(3)→(12+8)(relu)→O(mse)】)实现根据历史航空旅客数量数据集(时间序列数据)预测下月乘客数量问题
  6. Node + ts + puppeteer e2e前端自动化测试
  7. mysql 多字节编码漏洞_phpmyadmin 4.8.1 远程文件包含漏洞(CVE-2018-12613)
  8. 英特尔x722网卡驱动_产品详情 | 从核心到边缘,英特尔加速5G网络基础设施建设...
  9. 诺奖得主们年轻时都有哪些特征?擅长合作、论文高产是关键
  10. oracle file参数,oracle的参数以及pfile和spfile
  11. Spring Cloud微服务之搭建service_user模块(三)
  12. python中怎样创建字典内建函数_python中常用的字典内建函数
  13. Centos7系统中安装JDK、Tomcat、Mysql
  14. 御剑江湖一键端mysql_御剑情缘gm完整端下载
  15. Excel表格快捷键技巧使用
  16. 一招教你解决Win10屏幕模糊问题
  17. 详解Spring Ioc(控制反转)
  18. 基于python英文文件名批量翻译并重命名
  19. Android快速开发整理(库、插件,kotlin枚举注解
  20. 小米MIUI9关闭广告

热门文章

  1. react学习(73)--子组件this
  2. 前端学习(2039)vue之电商管理系统电商系统之优化运行server的Eslint警告
  3. 前端学习(1264):fetch响应结果
  4. 前端学习(981):jquery入门
  5. 前端学习(810):webapi和js的关联性
  6. spring mvc学习(26):处理数据模型--从表单到controller传输数据
  7. 17. 框架标签及其应用实例
  8. Qt弹出的窗口始终位于界面最前面的方法
  9. 泛型类java_Java泛型 - 通用类( Generic Classes)
  10. Linux:驱动程序直接编译到内核(源自国嵌的视频教学)