广告
返回顶部
首页 > 资讯 > 数据库 >010—存储过程和函数
  • 311
分享到

010—存储过程和函数

2024-04-02 19:04:59 311人浏览 泡泡鱼
摘要

一.对待存储过程和函数的态度 在实际项目中应该尽量少用存储过程和函数,理由如下: 1.移植性差,在Mysql中的存储过程移植到sqlsever上就不一定可以用了。 2.调试麻烦

一.对待存储过程和函数的态度

 

在实际项目中应该尽量少用存储过程和函数,理由如下:

 

1.移植性差,在Mysql中的存储过程移植到sqlsever上就不一定可以用了。

 

2.调试麻烦,在db中报一个错误和在应用层报一个错误不是一个概念,那将是毁灭性打击,直接一个error:1045什么的更本毫无头绪。

 

3.扩展性不高。

 

所以在互联网时代大型项目应该尽量少使用(不使用)存储过程和函数!!!

 

二.创建存储过程

 

2.1什么是存储过程?

 

存储过程和存储函数都是一组sql语句的集合。这些语句集合被当做一个整体存入数据库中。

 

2.2创建存储过程的语法:

 

create procedure 存储过程名(参数列表)

 

                    sql语句

.示例1:

delimiter //

create procedure pro()reads sql databegin select * from stu;end

//

 

那么我们现在就有一个存储过程pro了,但是这个存储过程他是没有参数的,他只是执行一次查询操作。

我们现在来讲解一下这个存储过程的结构:

delimiter //  是将分号转化为//   因为在sql执行时当他遇到分号 ; 时他就讲停止所以我们必须将其转化为 //直到最后一行才会停止执行。

reads sql  data   解释characteristic的状态在这里是只读模式,其他的模式还有:no sql 没有sql语句 , ins  sql 不包含读和写的语句 , modifies sql data   包含写入数据的语句等等。

begin   end   在存储过程中当有多条语句集合时我们必须使用begin和end。

 

//   结束整个存储过程

 

2.3使用存储过程

 

现在只是创建了一个存储过程,那么我们怎么来使用这个存储过程呢?

 

语法:call  存储过程名()

 

将上一个存储过程pro使用的例子:

 

call pro();

 

2.4创建一个带参数的存储过程

 

参数列表:存储过程的参数有三种类型:in,out,inout 分别表示传入参数和传出参数,和既传入也传出参数。

 

例子:首先我们来创建两张表:课程表是学生表的从表。

 

create table stu(

stu_id bigint primary key auto_increment,#学号

stu_name varchar(10) not null,#姓名

stu_major int not null,#专业号

stu_sex char,#性别

stu_in date,#入学日期

stu_birth date,#出生日期

foreign key (stu_major) references major(ma_id)#专业外键设置

);

 

 

create table major(

ma_id int primary key,

ma_name varchar(15),

ma_boss varchar(10)

);

insert into major values(1,"信管","张三");

insert into major values(2,"电子商务","李四");

insert into stu values(1,"小明",1,"男","2017-09-01","1998-12-23");

insert into stu values(2,"小高",1,"男","2017-09-01","1998-05-01");

insert into stu values(3,"小李",2,"男","2017-09-01","1999-04-01");

 

我们再来创建一个带有参数的存储过程找到学生的主修课的名字,代码如下:

 

delimiter //

create procedure pro1(in sname varchar(10),out ma varchar(10))

reads sql data

begin

select ma_name into ma from major where ma_id = (select stu_major from stu where stu_name=sname);

end

//

 

使用这个存储过程:代码如下:

 

set @ma="没查询之前";

call pro1("小李",@ma);

select @ma;

 

解释一下代码:首先使用set @ma 定义一个全局变量,然后在使用call 存储过程名 语法调用存储过程,同时全局变量ma的值也改变了。

 

三.创建一个存储函数

 

3.1存储过程和存储函数的不同。

 

1.在函数中必须要有return返回值

 

2.在存储过程中参数有in  out   inout三种,默认为in类型,但是在函数中只有一种in类型。

 

3.2创建一个函数

 

语法:create  function 函数名()

 

         return 返回类型

 

          sql语句集合

 

示例2:

delimiter //

create function fun1(num int)

returns int

begin

return num+1000;

end

//

显然函数与存储过程的最大的区别就是在于return

3.3调用函数

 

使用语法不在使用关键字call,而是关键字select ,select  函数名

 

例子:

 

select fun1(100);

 

 

四.删除存储函数和存储过程

 

 语法:drop   procedure  |   function  存储过程名或者是函数名

 

 例子:

 

drop procedure pro;

 

 

 注意:此时的存储过程或者函数名称是不带括号的!!!

 

 

五.在存储过程和存储函数中使用游标

 

5.1为什么需要游标?

 

当我们在使用存储过程的时候可能用到多条数据,那么我们就需要用到游标来存放多条数据。

 

5.2使用游标的注意点

 

游标不能单独存在,必须在存储过程或者是存储函数中使用。

 

5.3使用游标

 

语法:

 

1.创建游标:declare  游标名  cursor  for  select语句  

 

2.打开游标:open  游标名

 

3.使用游标:fetch  游标名  into  变量名

 

4.关闭光标:close 游标名

 

示例3:

delimiter //

create function fun3(id int)

returns intreads sql data

Begin

declare cur cursor for select stu_id from stu;

open cur;

fetch cur into id;

close cur;

return id;

End

//

 

使用

 

set @id=0;

select fun3(@id);

可以发现游标只是将第一个值给了变量。

 

 


您可能感兴趣的文档:

--结束END--

本文标题: 010—存储过程和函数

本文链接: https://www.lsjlt.com/news/41017.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 010—存储过程和函数
    一.对待存储过程和函数的态度 在实际项目中应该尽量少用存储过程和函数,理由如下: 1.移植性差,在MySQL中的存储过程移植到sqlsever上就不一定可以用了。 2.调试麻烦...
    99+
    2022-10-18
  • 存储过程和函数 oracle
    declare begin   dbms_output.put_line("Hello World"); end; declare   i number := 10; begin   if i > 5 then     dbms_ou...
    99+
    2021-01-19
    存储过程和函数 oracle
  • MySQL存储过程和函数
    存储过程与函数 类似与Java的方法和C语言的函数 存储过程概述 含义 一组经过预先编译的SQL语句的封装 执行过程:存储过程预先存储在MySQL服务器上,客户端发出命令后,服务器可以把预先存储好的SQL语句全部执行 好处 简化操作,提...
    99+
    2020-11-16
    MySQL存储过程和函数
  • MySQL 存储过程和函数
    创建存储过程和函数 创建存储过程和函数就是将经常使用的一组 SQL 语句组合在一起,并将这些 SQL 语句当作一个整体存储在 MySQL 服务器 1. 创建存储过程 CREATE PROCEDURE procedure_name ([p...
    99+
    2018-04-13
    MySQL 存储过程和函数
  • Oracle存储过程和函数
      创建一个存储过程:CREATE OR REPLACE procedure proc_trade(    v_tradeid...
    99+
    2022-10-18
  • 浅谈MYSQL存储过程和存储函数
    目录1. 什么是存储过程和存储函数?2. 创建存储过程3. 创建存储函数4. 存储过程和存储函数的使用5. 带有if语句的存储过程6. 带有循环语句的存储过程7. 带有事务的存储过程8. 带有游标的存储函数9. 存储过程...
    99+
    2023-05-05
    MYSQL存储过程 MYSQL 存储函数
  • 九、MySQL存储过程和函数
     存储过程就是一条或者多条SQL语句的集合,可视为批文件,但是其作用不仅限于批处理。9.1、创建存储过程和函数  存储程序可以分为存储过程和函数,MySQL中创建存储过程和函数使用的语句...
    99+
    2022-10-18
  • Mysql之存储过程和函数
    Mysql之存储过程和函数存储过程就是一条或多条SQL语句的集合,可视为批文件,但是其作用不仅用于批处理。存储程序分为:1、存储过程 2、函数使用Call语句来调用存储过程,只能用输出变量返回值。一、创建存...
    99+
    2022-10-18
  • Oracle系列:(29)存储过程和存储函数
    1、存储过程【procedure】什么是存储过程?事先运用oracle语法写好的一段具有业务功能的程序片段,长期保存在oracle服务器中,供oracle客户端(例如,sqlplus)和程序语言远程访问,类...
    99+
    2022-10-18
  • 细谈Mysql的存储过程和存储函数
    1 存储过程 1.1 什么是存储过程 存储过程是一组为了完成某项特定功能的sql语句集,其实质上就是一段存储在数据库中的代码,他可以由声明式的sql语句(如CREATE,UPDATE,SELECT等语句...
    99+
    2022-10-18
  • 创建存储函数、删除存储函数及 存储函数与存储过程的区别
    之前,我们列举不少mysql自带的函数,但是有些时候自带函数并不能很好满足我们的需求,此时就需要自定义存储函数了,存储函数与存储过程有些类似,简单来说就是封装一段sql代码,完成一种特定的功能,并返回结果。其语法如下: CREATE FUN...
    99+
    2022-02-07
    创建存储函数 删除存储函数及 存储函数与存储过程的区别
  • Oracle中怎么创建存储过程和存储函数
    本篇文章为大家展示了Oracle中怎么创建存储过程和存储函数,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。select * from emp;------...
    99+
    2022-10-18
  • mysql存储过程和存储函数有哪些区别
    本文小编为大家详细介绍“mysql存储过程和存储函数有哪些区别”,内容详细,步骤清晰,细节处理妥当,希望这篇“mysql存储过程和存储函数有哪些区别”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起...
    99+
    2022-10-19
  • MySQL 5.5 创建存储过程和函数
    执行CREATE PROCEDURE和CREATE FUNCTION语句需要CREATE ROUTINE权限。 查看neo用户现有权限 授权 mysql> grant create routin...
    99+
    2022-10-18
  • oracle存储过程和函数的区别
    oracle存储过程和函数的区别:1、返回值,存储过程没有返回值,函数具有返回值;2、使用方式, 存储过程使用CALL语句来调用,函数可以直接在SQL语句中使用;3、能力,存储过程更适合用于执行复杂的业务逻辑,函数可以作为SQL语句的一部分...
    99+
    2023-08-07
  • mysql中存储过程和存储函数指的是什么
    小编给大家分享一下mysql中存储过程和存储函数指的是什么,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!在mysql中,存储过程和存储函数都是数据库中定义的一些SQL语句的集合。其中,存储函数...
    99+
    2022-10-18
  • MySQL中存储过程和存储函数的示例分析
    这篇文章主要为大家展示了“MySQL中存储过程和存储函数的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“MySQL中存储过程和存储函数的示例分析”这篇文...
    99+
    2022-10-18
  • 关于MySQL的存储过程与存储函数
    目录初识存储过程存储过程语法存储过程调用存储函数的使用语法函数的调用对比存储函数和存储过程初识存储过程 理解:含义: 存储过程(Stored Procedure)是在大型数据库系统中...
    99+
    2023-05-19
    MySQL存储过程 MySQL存储函数
  • 存储过程+函数造数据myql
    往身份信息表插入N条记录,N=P*Q,p:每条insert语句插入的记录数,由临时表的数量决定q:循环次数,存储过程的入参 -- 身份信息表drop table if exists t_ident...
    99+
    2022-10-18
  • 存储过程和函数有什么区别?
    以下是函数和过程之间的主要区别:函数 th>过程函数有一个返回类型并返回一个值。 td>过程没有返回类型。但它使用 OUT 参数返回值。您不能将函数与数据操作查询一起使用。函数中只允许选择查询。您可以在过程中使用 DML 查询,例如插入、更...
    99+
    2023-10-22
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作