存储过程

打印 上一主题 下一主题

主题 669|帖子 669|积分 2007

简介:
  存储过程(Stored {recedure)是在大型数据库中,一组为了完成特定功能的SQL语句集合,一次编译后永久有效,用户通过指定存储过程的名字,并给出参数,来执行它。存储过程是数据库中的一个重要对象,在数据量特别庞大的情况下利用存储过程打到倍速小效率提升
创建一个存储过程:
优点: 

  • 存储过程可以分装,并隐藏复杂的商业逻辑
  • 存储过程可以回传值,并可以接受参数
  • 存储过程无法使用select指令来运行,因为他是子程序,与查看表,数据表定义的函数不同
  • 存储过程可以用在数据校验,强制实行商业逻辑等。
缺点:

  • 存储过程,汪汪定制化于特定的数据局上,因为支持的编程语言不同,当切换到其它厂商的数据库系统时,需要重写原有的存储过程。
  • 存储过程的性能调校与撰写,受限于各数据库类型
创建存储过程:

  • IN 输入参数: 表示调用者想过程传入值(传入值可以是字面量或变量)
  • OUT 输出参数: 表示过程想调用者传出值(可以返回多个值)(传出值只能是变量)
  • INOUT 输入输出参数: 既表示调用者向过程传入值,有表示过程想调用者传出值(值只能是变量)
  • select  查询出参
  1. delimiter $$ # 声明语句结束符,可以自定义
  2. create procedure c_users(in c_pk VARCHAR(32), OUT c_name VARCHAR(64)) # 声明存储过程 c_users()可以理解为是一个函数/方法
  3. BEGIN # 存储过程的开始符
  4.         set c_pk = "8796093087748";  # 为变量赋值
  5.        
  6.         select p_name INTO c_name from users WHERE PK = c_pk; # 将查询结果放到 c_users中
  7.        
  8. end $$ # 存储过程的结束符
  9. call c_users("8796093054980", @c_name) # 使用这个存储过程
  10. select @c_name # 查询出参
复制代码
 
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

商道如狼道

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表