转载 sql 存储过程与函数区别

SQL Server用户自定义函数和存储过程有类似的功能,都可以创建捆绑SQL语句,存储在server中供以后使用。这样能够极大地提高工作效率,通过以下的各种做法可以减少编程所需的时间:

  •   重复使用编程代码,减少编程开发时间。
  •    隐藏SQL细节,把SQL繁琐的工作留给数据库开发人员,而程序开发员则集中处理高级编程语言。
  •    维修集中化,可以在一个地方做业务上的逻辑修改,然后让这些修改自动应用到所有相关程序中。

  乍看之下,用户自定义函数和存储过程的功能似乎一摸一样。但是,其实这两者之间还有一些虽然细微但是很重要的差异:

  •    存储过程是使用EXEC命令独立调用的,而用户自定义函数是在另一个SQL语句中调用的。
  •    存储程序是允许用户和程序去使用存储过程,而不是允许其存取表格,这样能够增强程序安全性。与标准的SQL Server相比,存储程序限制用户行动权限方面更为细化。例如,如果你有一个货存表格,每次卖出一个货物收银员都要对表格进行更新一次(从货存中把该货品减去一件)。你可以给收银员设置权限,允许其使用decrement_item存储过程,而不是允许他们有任意修改或村表格的权限。
  •   函数必须始终返回一个值(一个标量值或一个表格)。而存储过程可以返回一个标量值、一个表值或无需返回值。

用户自定义函数是有返回值的过程,表格返回值是要通过表变量来处理返回的过程。

存储过程:

它们可以接受参数、输出参数、返回单个或多个结果集以及返回值

1、可以在单个存储过程中执行一系列 SQL 语句。
            2、可以从自己的存储过程内引用其它存储过程,这可以简化一系列复杂语句。

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

用户自定义函数:

与任何函数一样,用户定义函数是可返回值的例程。根据所返回值的类型,每个用户定义函数可分成以下三个类别:

1、返回可更新数据表的函数:如果用户定义函数包含单个 Select 语句且该语句可更新,则该函数返回的表格格式结果也可以更新。

2、返回不可更新数据表的函数:如果用户定义函数包含不止一个 Select 语句,或包含一个不可更新的 Select 语句,则该函数返回的表格格式结果也不可更新。

3、返回标量值的函数:用户定义函数可以返回标量值。

存储过程
    
           1. 功能强大,限制少
           2. 不能直接引用返回值
           3. 用select语句返回记录集

自定义函数

1. 诸多限制,有许多语句不能使用,许多功能不能实现
           2. 可以直接引用返回值
           3. 用表变量返回记录集

时间: 2024-08-06 18:47:58

转载 sql 存储过程与函数区别的相关文章

【SQL server基础】SQL存储过程和函数的区别

本质上没区别.只是函数有如:只能返回一个变量的限制.而存储过程可以返回多个.而函数是可以嵌入在sql中使用的,可以在select中调用,而存储过程不行.执行的本质都一样.      函数限制比较多,比如不能用临时表,只能用表变量.还有一些函数都不可用等等.而存储过程的限制相对就比较少       1.    一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强.       2.    对于存储过程来说可以返回参数,而函数只能返回值或者表对象.       3.    存储过程

SQL存储过程和函数

SQL存储过程: 由来:在具体应用中,一个完整的操作会包含多条SQL语句,在执行过程中需要根据前面SQL语句的执行结果有选择的执行后面的SQL语句.因此,mysql提供了数据库对象存储过程和函数. 定义:存储过程就是作为可执行对象存放在数据库中的一个或多个SQL命令.和函数的区别在于,函数有返回值,存储过程没有. 优点: 1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度.2.当对数据库进行复杂操作时,

Mysql存储过程和函数区别介绍

原文链接 存储过程是用户定义的一系列sql语句的集合,涉及特定表或其它对象的任务,用户可以调用存储过程,而函数通常是数据库已定义的方法,它接收参数并返回某种类型的值并且不涉及特定用户表. 存储过程和函数存在以下几个区别: 1)一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强.存储过程,功能强大,可以执行包括修改表等一系列数据库操作:用户定义函数不能用于执行一组修改全局数据库状态的操作. 2)对于存储过程来说可以返回参数,如记录集,而函数只能返回值或者表对象.函数只能返回一个

PL/SQL&存储过程||存储函数&触发器

plsql 有点:交互式  非过程化   数据操纵能力强   自动导航语句简单   调试简单   想率高 声明类型的方式 1.基本类型 2.引用变量 3.记录型变量 基本格式 declare 声明 begin exception end 判断语句 if:..then... else end if: 循环 loop 退出条件   exit when ...; end loop: 光标 cursor ---resltSet 返回多行数据 格式 cursor 表明 oper 打开 fetch 去一行光

SQL——存储过程与函数

环境 DBMS:MySQL 8.0.17 工具:Navicat Premium 11.2.16 存储过程 存储过程是由过程化SQL语言书写的过程,这个过程经编译和优化后存储在数据库服务器中,使用时调用即可. 优点: 运行效率高.提供了在服务器端快速执行SQL语句的有效途径. 降低了客户机和服务器之间的通信量.客户机上的应用程序只要通过网络向服务器发出调用存储过程的名字和参数,就可以执行其中的多条SQL语句并进行数据处理.只有最终的处理结果才返回客户端. 方便实施企业规则.可以把企业规则的运算程序

Oracle数据库--PL/SQL存储过程和函数的建立和调用

1.存储过程建立的格式: create or replace procedure My_Procedure is begin --执行部分(函数内容); end; / 例子:(以hr表为例) create or replace procedure insert_procedure isbegininsert into JOBS values('MY_JOB','My Job',5000,10000);end;/ 2.存储过程调用 begininsert_procedure();end/ 3.函数

sql 存储过程和函数

最近在学习数据库,上课过程中总是在许多知识点有或多或少的问题,对于这些问题的产生,大概是由于我听课习惯所造成的吧,好啦,废话不多说,开始今天到主题吧. 首先介绍SQL的存储过程,先来给它定义,存储过程是由过程化SQL语句书写的过程,这个过程经过编译和优化后存储在数据库服务器中,因此称它为存储过程,使用是只需要调用即可 优点: 1.运行效率高,因为它不像解释执行的SQL语句那样在提出操作请求的时候,才开始进行语法分析和优化工作.它提供了在服务器端快速执行SQL语句的有效途径. 2.存储过程降低了客

MYSQL存储过程和函数学习笔记

学至Tarena金牌讲师何山,金色晨曦科技公司技术总监沙利穆课程笔记的综合. 1. 什么是存储过程和函数 将SQL语句放入一个集合里,然后直接调用存储过程和函数来执行已经定义好的SQL语句,通过存储过程和函数,可以避免开发人员重复编写相同的SQL语句. MYSQL存储过程和函数是保存在服务器中,在服务器中存储和执行,可以减少客户端和服务器端之间数据传输的消耗. 存储过程就是一组已经保存在数据库中的语句,并且可以随时地调用. 存储过程允许标准组件式编程,存储过程在被创建以后可以在程序中被多次调用而

MySql存储过程、函数

存储过程和函数是在数据库中定义一些SQL语句的集合,然后直接调用这些存储过程和函数来执行已经定义好的SQL语句.存储过程和函数可以避免开发人员重复的编写相同的SQL语句.而且,存储过程和函数是在MySQL服务器中存储和执行的,可以减少客户端和服务器端的数据传输.一.存储过程1.1.基本语法 CREATE PROCEDURE sp_name ([proc_parameter[,...]])     [characteristic ...] routine_body Sp_name:存储过程的名称,