精华内容
下载资源
问答
  • 主要介绍了Mysql存储过程和函数区别,需要的朋友可以参考下
  • mysql中存储过程和函数区别

    千次阅读 2018-05-23 18:11:25
    概述1)一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。存储过程,功能强大,可以执行包括修改表等一系列数据库操作;用户定义函数不能用于执行一组修改全局数据库状态的操作。2)对于...

    概述

    1)一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。存储过程,功能强大,可以执行包括修改表等一系列数据库操作;用户定义函数不能用于执行一组修改全局数据库状态的操作。


    2)对于存储过程来说可以返回参数,如记录集,而函数只能返回值或者表对象。函数只能返回一个变量;而存储过程可以返回多个。存储过程的参数可以有IN,OUT,INOUT三种类型,而函数只能有IN类~~存储过程声明时不需要返回类型,而函数声明时需要描述返回类型,且函数体中必须包含一个有效的RETURN语句。


    3)存储过程,可以使用非确定函数,不允许在用户定义函数主体中内置非确定函数。


    4)存储过程一般是作为一个独立的部分来执行( EXECUTE 语句执行),而函数可以作为查询语句的一个部分来调用(SELECT调用),由于函数可以返回一个表对象,因此它可以在查询语句中位于FROM关键字的后面。 SQL语句中不可用存储过程,而可以使用函数。


    1.创建存储过程和函数语法

    CREATE PROCEDURE sp_name ([proc_parameter[,...]])
        [characteristic ...] routine_body
     
    CREATE FUNCTION sp_name ([func_parameter[,...]])
        RETURNS type
        [characteristic ...] routine_body
        
        proc_parameter:
        [ IN | OUT | INOUT ] param_name type
        
        func_parameter:
        param_name type
     
    type:
        Any valid MySQL data type
     
    

    2.修改存储过程函数语法

    ALTER {PROCEDURE | FUNCTION} sp_name [characteristic ...]
     
    characteristic:
        { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
      | SQL SECURITY { DEFINER | INVOKER }
      | COMMENT 'string'
    


    3.删除存储过程函数语法

    DROP {PROCEDURE | FUNCTION} [IF EXISTS] sp_name


    4.查看存储过程和函数


    1.查看存储过程状态
    
    SHOW {PROCEDURE | FUNCTION} STATUS [LIKE 'pattern']
    show procedure status like 'Pro_Employee' \G
    2.查看存储过程和函数的创建语法
    SHOW CREATE {PROCEDURE | FUNCTION} sp_name
    
    SHOW CREATE PROCEDURE Pro_Employee \G;
    3.查看存储过程和函数详细信息
    SELECT * FROM information_schema.ROUTINES WHERE ROUTINE_NAME='Pro_Employee' \G;
    




    展开全文
  • 竟然他是方法那么他就有类似的方法名,方法要传递的变量返回结果,所以存储过程存储过程名有存储过程参数也有返回值。 存储过程的优点: 存储过程的能力大大增强了SQL语言的功能灵活性。 1.可保证数据的安全性...

    什么是存储过程

    如果你接触过其他的编程语言,那么就好理解了,存储过程就像是方法一样。

    竟然他是方法那么他就有类似的方法名,方法要传递的变量和返回结果,所以存储过程有存储过程名有存储过程参数也有返回值。

    存储过程的优点:

    存储过程的能力大大增强了SQL语言的功能和灵活性。

    1.可保证数据的安全性和完整性。

    2.通过存储过程可以使没有权限的用户在控制之下间接地存取数据库,从而保证数据的安全。

    3.通过存储过程可以使相关的动作在一起发生,从而可以维护数据库的完整性。

    4.在运行存储过程前,数据库已对其进行了语法和句法分析,并给出了优化执行方案。这种已经编译好的过程。

    5.可极大地改善SQL语句的性能。

    6.可以降低网络的通信量。

    7.使体现企业规则的运算程序放入数据库服务器中,以便 集中控制。

    存储过程可以分为系统存储过程、扩展存储过程和用户自定义的存储过程

    系统存储过程

    我们先来看一下系统存储过程,系统存储过程由系统定义,主要存放在MASTER数据库中,名称以"SP"开头或以"XP"开头。尽管这些系统存储过程在MASTER数据库中

    但我们在其他数据库还是可以调用系统存储过程。有一些系统存储过程会在创建新的数据库的时候被自动创建在当前数据库中。

    常用系统存储过程有:

    代码如下:
    exec sp_databases; --查看数据库

    exec sp_tables; --查看表

    exec sp_columns student;–查看列

    exec sp_helpIndex student;–查看索引

    exec sp_helpConstraint student;–约束

    exec sp_helptext ‘sp_stored_procedures’;–查看存储过程创建定义的语句

    exec sp_stored_procedures;

    exec sp_rename student, stuInfo;–更改表名

    exec sp_renamedb myTempDB, myDB;–更改数据库名称

    exec sp_defaultdb ‘master’, ‘myDB’;–更改登录名的默认数据库

    exec sp_helpdb;–数据库帮助,查询数据库信息

    exec sp_helpdb master;

    exec sp_attach_db --附加数据库

    exec sp_detach_db --分离数据库

    存储过程语法:

    在创建一个存储过程前,先来说一下存储过程的命名,看到好几篇讲存储过程的文章都喜欢在创建存储过程的时候加一个前缀,养成在存储过程名前加前缀的习惯很重要,虽然这只是一件很小的事情,但是往往小细节决定大成败。看到有的人喜欢这样加前缀,例如proc_名字。也看到这加样前缀usp_名字。前一种proc是procedure的简写,后一种sup意思是user procedure。我比较喜欢第一种,那么下面所有的存储过程名都以第一种来写。至于名字的写法采用骆驼命名法。

    创建存储过程的语法如下:

    代码如下:

    CREATE PROC[EDURE] 存储过程名
     
    
    @参数1 [数据类型]=[默认值] [OUTPUT]
    
    @参数2 [数据类型]=[默认值] [OUTPUT]
    
    AS
    
    SQL语句
    
    EXEC 过程名[参数]
    
    

    使用存储过程实例:

    1.不带参数

    代码如下:

    create procedure proc_select_officeinfo--(存储过程名)
    as select Id,Name from Office_Info--(sql语句)
     
    
    exec proc_select_officeinfo--(调用存储过程)
    

    2.带输入参数

    代码如下:

    create procedure procedure_proc_GetoffinfoById --(存储过程名)
    @Id int--(参数名 参数类型)
    as select Name from dbo.Office_Info where Id=@Id--(sql语句)
     
    
    exec procedure_proc_GetoffinfoById 2--(存储过程名称之后,空格加上参数,多个参数中间以逗号分隔)
    

    注:参数赋值是,第一个参数可以不写参数名称,后面传入参数,需要明确传入的是哪个参数名称

    DEMO1:

     create proc proc_ta  --不带参数的存储过程
     as
     begin
     select [Country],[IATACode] from [Test].[dbo].[Ta]
     end
     go
    
     select * from  [Test].[dbo].[Ta]
     go
     exec  proc_ta  --查看存储过程
     go
    

    在这里插入图片描述
    DEMO2:

     create proc proc_select_ta
     (
      @Country int 
     )
     as 
     begin
     select * from [Test].[dbo].[Ta] where Country=@Country  --带参数的存储过程
     end
    

    在这里插入图片描述

    函数

    SQL Aggregate 函数

    SQL Aggregate 函数计算从列中取得的值,返回一个单一的值。

    有用的 Aggregate 函数:

    AVG() - 返回平均值

    SELECT AVG(column_name) FROM table_name
    

    COUNT() - 返回行数

    SELECT COUNT(column_name) FROM table_name;
    

    FIRST() - 返回第一个记录的值

    SELECT FIRST(column_name) FROM table_name;
    

    LAST() - 返回最后一个记录的值

    SELECT LAST(column_name) FROM table_name;
    

    MAX() - 返回最大值

    SELECT MAX(column_name) FROM table_name;
    

    MIN() - 返回最小值

    SELECT MIN(column_name) FROM table_name;
    

    SUM() - 返回总和

    SELECT SUM(column_name) FROM table_name;
    

    SQL Scalar 函数

    SQL Scalar 函数基于输入值,返回一个单一的值。

    有用的 Scalar 函数:

    UCASE() - 将某个字段转换为大写

    SELECT UCASE(column_name) FROM table_name;
    

    LCASE() - 将某个字段转换为小写

    SELECT LCASE(column_name) FROM table_name;
    

    MID() - 从某个文本字段提取字符,MySql 中使用

    SELECT MID(column_name,start[,length]) FROM table_name;
    

    SubString(字段,1,end) - 从某个文本字段提取字符

    SELECT SubString(column_name,1,end) FROM table_name;
    

    LEN() - 返回某个文本字段的长度

    SELECT LEN(column_name) FROM table_name;
    

    ROUND() - 对某个数值字段进行指定小数位数的四舍五入

    SELECT ROUND(column_name,decimals) FROM table_name;
    

    NOW() - 返回当前的系统日期和时间

    SELECT NOW() FROM table_name;
    

    FORMAT() - 格式化某个字段的显示方式

    SELECT FORMAT(column_name,format) FROM table_name;
    

    区别

    1.储存过程可以有返回值也可以无返回值。函数必须有返回值。

    2.存储过程的实现比较复杂,而函数的实现比较有针对性。

    3.储存过程可以输入输出参数,而函数只可以输入参数。

    4.过程允许在其中选择以及DML语句,而函数只可以在其中select语句。

    5.可以在存储过程中调用函数,不可以在函数中调用存储过程。

    展开全文
  • 很清晰的说明了存储过程和函数区别
  • oracle中的存储过程和存储函数区别

    万次阅读 多人点赞 2018-11-13 18:36:02
    oracle中的存储过程和存储函数区别 (尊重劳动成果,转载请注明出处:https://blog.csdn.net/qq_39778516/article/details/84032796 consistencely的博客) 1.存储过程 存储过程(Stored Procedure)是在大型...

    oracle中的存储过程和存储函数的区别
    (尊重劳动成果,转载请注明出处:https://blog.csdn.net/qq_39778516/article/details/84033710 consistencely的博客)
    1.存储过程
    存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的 SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。
    创建存储过程语法
    create [or replace] PROCEDURE 过程名[(参数名 in/out 数据类型)]
    as/is
    begin
    PLSQL 子程序体;
    End;
    范例:创建一个输出 helloword 的存储过程。
    在这里插入图片描述
    调用存储过程
    在 plsql 中调用存储过程。
    在这里插入图片描述
    范例 2:给指定的员工涨 100 工资
    分析:我们需要使用带有参数的存储过程。
    方法一:
    在这里插入图片描述
    方法二:
    在这里插入图片描述
    在这里插入图片描述
    2.存储函数
    存储过程和存储函数的区别
    一般来讲,过程和函数的区别在于函数可以有一个返回值;而过程没有返回值。但过程和函数都可以通过 out 指定一个或多个输出参数。我们可以利用 out 参数,在过程和函数中实现返回多个值。
    语法:
    在这里插入图片描述
    范例:使用存储函数来查询指定员工的年薪
    在这里插入图片描述
    使用存储过程来替换上面的例子
    在这里插入图片描述
    在这里插入图片描述
    3.本质区别:
    存储函数有返回值,而存储过程没有返回值。
    3.1 如果存储过程想实现有返回值的业务,我们就必须使用out类型的参数。
    3.2 即便是存储过程使用了out类型的参数,起本质也不是真的有了返回值,
    3.3 而是在存储过程内部给out类型参数赋值,在执行完毕后,我们直接拿到输出类型参数的值。
    案例需求:查询出员工姓名,员工所在部门名称。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    4.Java 程序调用存储过程
    在这里插入图片描述
    5.Java 程序调用存储函数
    在这里插入图片描述

    展开全文
  • 一、为什么要使用存储过程和函数 存储过程和函数,是用来实现一组关于表操作的SQL语句、可重复地执行操作数据库的集合。...他们的主要区别函数必须有返回值,而存储过程可以没有。 二、存储过程...

    欢迎大家关注我的公众号【老周聊架构】,Java后端主流技术栈的原理、源码分析、架构以及各种互联网高并发、高性能、高可用的解决方案。

    一、为什么要使用存储过程和函数

    存储过程和函数,是用来实现一组关于表操作的SQL语句、可重复地执行操作数据库的集合。

    存储过程和函数可以简单的理解为一条或多条SQL语句的集合。存储过程和函数就是事先经过编译并存储在数据库中的一段SQL语句集合。存储过程和函数执行不是由程序调用,也不是手动启动,而是由事件触发、激活从而实现执行的。
    他们的主要区别是函数必须有返回值,而存储过程可以没有。

    二、存储过程和函数区别

    • 一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。 存储过程,功能强大,可以执行包括修改表等一系列数据库操作;用户定义函数不能用于执行一组修改全局数据库状态的操作。
    • 对于存储过程来说可以返回参数,如记录集,而函数只能返回值或者表对象。函数只能返回一个变量;而存储过程可以返回多个。存储过程的参数可以有IN,OUT,INOUT三种类型,而函数只能有IN类型。存储过程声明时不需要返回类型,而函数声明时需要描述返回类型,且函数体中必须包含一个有效的RETURN语句。
    • 存储过程一般是作为一个独立的部分来执行( EXECUTE 语句执行),而函数可以作为查询语句的一个部分来调用(SELECT调用),由于函数可以返回一个表对象,因此它可以在查询语句中位于FROM关键字的后面。 SQL语句中不可用存储过程,而可以使用函数。

    三、存储过程和函数优缺点

    优点:

    • .存储过程和函数允许标准组件式编程,提高了SQL语句的重用性、共享性和可移植性。
    • 存储过程和函数可以被作为一种安全机制来利用。
    • 存储过程和函数能够实现较快的执行速度,能够减少网络流量。

    缺点:

    • 存储过程和函数的编写比单句SQL语句复杂。
    • 在编写存储过程和函数时,需要创建这些数据库对象的权限。
    展开全文
  • Mysql 存储过程和函数区别

    万次阅读 2011-08-27 19:49:43
    存储过程是用户定义的一系列sql语句的集合,涉及特定表或其它对象的任务,用户可以调用存储过程,而函数通常是数据库已定义... 存储过程和函数存在以下几个区别:  1)一般来说,存储过程实现的功能要复杂一点,而函
  • 1 MySQL存储过程和函数 过程和函数,它们被编译后保存在数据库中,称为持久性存储模块(Persistent Stored Module,PSM),可以反复调用,运行速度快。 1.1 存储过程 存储过程是由过程化 SQL 语句书写
  • 存储过程函数区别

    万次阅读 2017-06-15 10:40:11
    存储过程函数区别  本质上没区别,执行的本质都一样。  只是函数有如:只能返回一个变量的限制。而存储过程可以返回多个。   函数是可以嵌入在sql中使用的,可以在select中调用,而存储过程要让sql的...
  • 什么是存储过程,什么是函数,它们有什么区别 在Postgresql中, 其实这两个都是同一个概念,创建方式相同,都是create function … 上图的区分: 存储过程(Procedures):无返回值(返回值为void)的函数...
  • 1、请写出unionunion all的区别 Union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序; Union All:对两个结果集进行并集操作,包括重复行,不进行排序;unionunion all的区别是,union会...
  • MySQL存储过程和函数区别与优缺点

    千次阅读 2017-07-02 11:17:30
    为什么要使用存储过程和函数 数据库对象存储过程和函数,是用来实现一组关于表操作的SQL语句代码当做一个整体来执行。一个完整的操作会包含多条SQL语句,在执行过程中需要根据前面的SQL语句来执行结果有选择的执行...
  • MySQL中函数存储过程区别

    千次阅读 2019-08-21 18:21:27
    概念:自定义函数 (user-defined function UDF)就是用一个象ABS() 或 CONCAT()这样的固有(内建)函数一样作用的新函数去扩展MySQL,所以UDF是对MySQL功能的一个扩展 创建函数: delimiter $$ create function ...
  • 存储过程和存储函数区别

    千次阅读 2018-09-09 12:46:33
    存储过程和存储函数区别 语法区别:关键字不一样, 存储函数存储过程多了两个return。 本质区别:存储函数有返回值,而存储过程没有返回值。 如果存储过程想实现有返回值的业务,我们就必须使用out类型的参数...
  • SQL SERVER 中存储过程和函数区别

    千次阅读 2012-10-10 17:30:15
    存储过程  函数 存储过程定义中的 参数可以为任意数据类型 ,包括用户定义的类型,同时过程还 可以拥有输出参数 ,用于返回任何数据类型的结果。  存储过程只能直接 返回整型值 ,通常用于...
  • Oracle 存储过程函数 区别

    千次阅读 2012-03-27 01:32:57
    定义: 存储过程(Stored Procedure )是一组为了完成特定功能的SQL 语句集,经编译后存储在数据库...存储过程是由流控制SQL 语句书写的过程,这个过程经编译优化后存储在数据库服务器中,应用程序使用时只要调用
  • 10.pgsql函数和存储过程

    千次阅读 2020-02-17 23:01:13
    pgsql并没有将函数和存储过程做区分,通俗一点说,就是pgsql的函数也就是存储过程存储过程就是函数。psql官方网站统称为PL/pgSQL - SQL 过程语言。 2.函数的语法 CREATE [OR REPLACE] FUNCTION function_name ...
  • SQL中存储过程和函数区别

    千次阅读 2017-09-17 18:25:29
    函数是可以嵌入在sql中使用的,可以在select中调用,而存储过程不行。执行的本质都一样。   函数限制比较多,比如不能用临时表,只能用表变量.还有一些函数都不可用等等.而存储过程的限制相对就比较少   1....
  • oracle存储过程函数区别

    万次阅读 2017-08-15 22:49:38
    定义: 存储过程(Stored Procedure )是一组为了完成特定功能的SQL 语句集,经编译后存储在数据库...存储过程是由流控制SQL 语句书写的过程,这个过程经编译优化后存储在数据库服务器中,应用程序使用时只要调用
  • 开始之前 首先创建如下两张表,并初始化一些数据。 创建存储过程(CREATE PROCEDURE) ...基本语法格式如下: ...CREATE PROCEDURE sp_name (parameters) ...sp_name为存储过程的名称(唯一性,没有所谓的重...
  • 视图,存储过程和函数区别

    千次阅读 2016-11-15 10:36:17
    表是真实存在, 它占存储空间 视图相当于一个查询语句它不占有存储空间 一个浅显的比喻吧:表是可执行文件,视图是快捷方式 表是真正的存在与数据库中(也就是硬件介质上)的数据...函数和存储过程本质上没区别。 函
  • MySQL调用存储过程和函数

    千次阅读 2019-09-01 15:00:27
    存储过程和函数有多种调用方法。存储过程必须使用call语句调用,并且存储过程和数据库相关,如果要执行其他数据库中的存储过程,需要指定数据库名称。例如call dbname.procname。存储函数的调用与MySQL中预定义的...
  • MySQL存储过程与存储函数区别

    千次阅读 2018-01-26 11:11:51
    一.MySQL存储过程与存储函数区别 ... ...存储函数和存储过程统称为存储例程(stored routine)。两者的定义语法很相似,但却是不同的内容。 存储函数限制比较多,比如不能用临时表,只能用表变
  • SQL存储过程和函数

    千次阅读 2019-07-05 14:19:07
    SQL存储过程和函数 存储过程和函数是事先经过编译并存储在数据库中的一段 SQL 语句的集合。 与函数区别 (1)函数必须有返回值,而存储过程没有 (2)存储过程的参数可以使用 IN、OUT、INOUT 类型,而函数的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,013,684
精华内容 405,473
关键字:

存储过程和函数的区别