`

 函数与存储过程区别

阅读更多
 本质上没区别。只是函数有如:只能返回一个变量的限制。而存储过程可以返回多个。而函数是可以嵌入在sql中使用的,可以在select中调用,而存储过程不行。执行的本质都一样。
  本质上没区别。只是函数有如:只能返回一个变量的限制。而存储过程可以返回多个。而函数是可以嵌入在sql中使用的,可以在select中调用,而存储过程不行。执行的本质都一样。

  函数限制比较多,比如不能用临时表,只能用表变量.还有一些函数都不可用等等.而存储过程的限制相对就比较少

  1. 一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。

  2. 对于存储过程来说可以返回参数,而函数只能返回值或者表对象。

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

  4. 当存储过程和函数被执行的时候,SQL Manager会到procedure cache中去取相应的查询语句,如果在procedure cache里没有相应的查询语句,SQL Manager就会对存储过程和函数进行编译。

  Procedure cache中保存的是执行计划 (execution plan) ,当编译好之后就执行procedure cache中的execution plan,之后SQL SERVER会根据每个execution plan的实际情况来考虑是否要在cache中保存这个plan,评判的标准一个是这个execution plan可能被使用的频率;其次是生成这个plan的代价,也就是编译的耗时。保存在cache中的plan在下次执行时就不用再编译了。

  存储过程和用户自定义函数具体的区别

  先看定义:

  存储过程

  存储过程可以使得对数据库的管理、以及显示关于数据库及其用户信息的工作容易得多。存储过程是 SQL 语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理。存储过程存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量、有条件执行以及其它强大的编程功能。

  存储过程可包含程序流、逻辑以及对数据库的查询。它们可以接受参数、输出参数、返回单个或多个结果集以及返回值。

  可以出于任何使用 SQL 语句的目的来使用存储过程,它具有以下优点:

  可以在单个存储过程中执行一系列 SQL 语句。

  可以从自己的存储过程内引用其它存储过程,这可以简化一系列复杂语句。

  存储过程在创建时即在服务器上进行编译,所以执行起来比单个 SQL 语句快。

  用户定义函数

  函数是由一个或多个 Transact-SQL 语句组成的子程序,可用于封装代码以便重新使用。Microsoft? SQL Server? 2000 并不将用户限制在定义为 Transact-SQL 语言一部分的内置函数上,而是允许用户创建自己的用户定义函数。

  可使用 CREATE FUNCTION 语句创建、使用 ALTER FUNCTION 语句修改、以及使用 DROP FUNCTION 语句除去用户定义函数。每个完全合法的用户定义函数名 (database_name.owner_name.function_name) 必须唯一。

  必须被授予 CREATE FUNCTION 权限才能创建、修改或除去用户定义函数。不是所有者的用户在 Transact-SQL 语句中使用某个函数之前,必须先给此用户授予该函数的适当权限。若要创建或更改在 CHECK 约束、DEFAULT 子句或计算列定义中引用用户定义函数的表,还必须具有函数的 REFERENCES 权限。
分享到:
评论

相关推荐

    oracle笔记存储函数和存储过程

    oracle笔记存储函数和存储过程,有具体的代码案例!存储函数和存储过程的知识笔记!

    MySQL实验报告5(存储过程与函数)(1)(1).pdf

    函数与存储过程类似,也是一种子程序。不同之处在于函数必须返回一个值。报告中并没有直接提及函数的创建,但是存储过程中的某些操作可以通过函数来实现,比如获取表中的记录数等。 3. 使用游标 游标允许逐行遍历...

    存储过程和函数的区别

    ### 存储过程和函数的区别 #### 一、概述 在数据库编程中,存储过程(Stored Procedure)与函数(Function)都是预编译并存储在数据库服务器上的代码块,能够提高应用程序性能,简化复杂的数据库操作,并增强数据...

    oracle函数调用存储过程

    **函数**则是一种特殊的存储过程,它也包含PL/SQL代码,但与存储过程不同的是,函数必须返回一个值。这个值可以被其他SQL语句或PL/SQL代码所引用。 #### 案例分析 假设我们有一个存储过程`plan_station_contrast`...

    存储过程与函数的区别

    本文将深入探讨存储过程与函数的差异,以及如何在实际应用中正确使用它们。 首先,存储过程(Stored Procedure)是一种预编译的SQL语句集合,它可以包含多个SQL语句、控制流结构(如IF-ELSE、WHILE等)、变量声明和...

    原创sql存储过程函数范例

    2009-08-31 11:23 1,408 存储过程-函数区别.txt 2009-08-31 11:30 545 存储过程.sql 2010-04-11 12:05 543 执行存储过程,函数(特殊).sql 2011-03-07 21:53 0 新建 文本文档.txt 2010-04-11 12:03 731 游标的使用1...

    Oracle中的函数、存储过程、包

    3. **函数与存储过程的区别**: - **返回值**:函数必须有返回值,而存储过程可以没有返回值,或者通过OUT参数返回结果。 - **数据修改**:函数不能修改数据库中的数据,而存储过程可以。 - **参数类型**:两者都...

    存储函数与存储过程

    存储函数与存储过程

    实验4存储过程和函数实验

    适合sqlserver数据库初学者,实验四存储过程和函数实验

    第11章MySQL存储过程与函数.docx

    MySQL 存储过程与函数 MySQL 存储过程和函数是数据库中定义的一组用户定义的 SQL 语句集合。它们之间的区别在于: 1. 存储过程实现的功能要复杂一点,而函数实现的功能针对性比较强。 2. 存储过程可以返回参数,而...

    mysql存储过程和存储函数

    mysql存储过程,存储函数练习,里面有详细代码,供大家参考

    Oracle10G_函数与存储过程

    Oracle10G_函数与存储过程 Oracle数据库中不仅可以使用单条语句对数据库进行增、删、改、查操作,而且可以多条语句组成一个语句块,并一起执行。这些语句块可以进行显式命名,并被其他应用调用。这些命名的语句块被...

    PL/SQL 的函数与存储过程练习

    PL/SQL 的函数与存储过程练习 PL/SQL 的函数与存储过程练习

    java调用oracle存储过程或者函数

    调用Oracle函数的过程与调用存储过程类似,但创建CallableStatement时的SQL语句略有不同。由于函数会返回一个值,所以格式通常是`{? = call function_name(?, ?, ...)}`。在执行后,通过`CallableStatement....

    自定义函数、存储过程和触发器.pdf

    ### 自定义函数、存储过程和触发器 #### 9.1 自定义函数 自定义函数是在SQL Server中由用户自行创建的一种子程序,用于补充和扩展系统提供的内置函数功能。自定义函数的主要目的是提高代码的复用性以及解决特定...

    GBase 8S 自定义存储过程和函数.doc

    与普通的SQL查询相比,存储过程有以下几个显著优点: 1. **模块化编程**:存储过程类似高级语言中的函数,可以被多个应用程序调用,实现了代码的模块化,提高代码的复用性,减少了重复编写相同功能的代码。 2. **...

    常用SQL工具存储过程与函数.rar

    本压缩包“常用SQL工具存储过程与函数.rar”可能包含了一些常见SQL工具中用于管理和操作数据库存储过程与函数的相关资料,如日志文件(spTool_Log.LDF)和数据文件(spTool_Data.MDF)。 存储过程是预编译的SQL语句...

    数据库函数、存储过程详解

    数据库函数和存储过程是数据库管理系统中的重要组成部分,它们在数据处理和业务逻辑实现中起着核心作用。在Sybase数据库系统中,这两者都提供了强大的功能,帮助开发者更有效地管理和操作数据。 首先,我们来详细...

    函数与存储过程.sql

    函数与存储过程.sql

    Mysql存储过程和函数

    #### 二、存储过程与函数的区别 - **存储过程**(Stored Procedure):是一系列SQL语句的集合,它可以接受输入参数并返回多个结果集和返回值。存储过程可以提高代码复用性,减少网络流量,并且可以包含复杂的逻辑...

Global site tag (gtag.js) - Google Analytics