首页 > 电脑 > 简述在PL/SQL中过程与函数的区别。

简述在PL/SQL中过程与函数的区别。

电脑 2022-06-16

plsql中分析函数和存储过程有什么区别

1. 返回值的区别,函数有1个返回值,而存储过程是通过参数返回的,可以有多个或者没有 2.调用的区别,函数可以在查询语句中直接调用,而存储过程必须单独调用. 3.函数一般情况下是用来计算并返回一个计算结果而存储过程一般是用来完成特定的数据操作(比如修改、插入数据库表或执行某些DDL语句等等) 4.参数的返回情况来看: 如果返回多个参数值最好使用存储过程,如果只有一个返回值的话可以使用函数; 5.从调用情况来看: 如果在SQL语句(DML或SELECT)中调用的话一定是存储函数或存储的封装函数不可以是存储过程,但调用存储函数的时候还有好多限制以及函数的纯度等级的问题. 6.oracle函数和存储

过程与函数有什么区别?

1、返回值不同:

存储过程可以使得对的管理、以及显示关于及其用户信息的工作容易得多。存储过程是 SQL 语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理。

2、变量不同:

存储过程存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量、 有条件执行以及其它强大的编程功能。存储过程可包含程序流、逻辑以及对数据库的查询。可以接受参数、输出参数、返回单个或多个结果集以及返回值。

扩展资料

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

(1)功能强大,限制少。

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

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

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

(5)可以有多个返回值,即多个输出参数,并且可以使用SELECT返回结果集。

参考资料来源:百度百科-函数

SQL函数和存储过程的区别

不同点: 1、标识符不同。函数的标识符为FUNCTION,过程为:PROCEDURE。 2、函数中有返回值,且必须返回,而过程可以没有返回值。 3、过程无返回值类型,不能将结果直接赋值给变量;函数有返回值类型,调用时,除在select中,必须将返回值赋给变量。 4、函数可以在select语句中直接使用实现对字段进行计算,而存储过程不能, 例如:假设已有函数fun_getAVG() 返回number类型绝对值。 那么select fun_getAVG(col_a) from table 这样是可以的。 5、函数一般处理简单的逻辑方便,存储过程一般处理复杂的逻辑, 相同点: 1、二者都可以有输出

存储过程和函数的区别

一、含义不同

1、存储过程:存储过程是 SQL 语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理。

2、函数:是由一个或多个 SQL 语句组成的子程序,可用于封装代码以便重新使用。函数限制比较多,如不能用临时表,只能用表变量等

二、使用条件不同

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

2、函数:自定义函数诸多限制,有许多语句不能使用,许多功能不能实现。函数可以直接引用返回值,用表变量返回记录集。但是,用户定义函数不能用于执行一组修改全局数据库状态的操作。

三、执行方式不同

1、存储过程:存储过程可以返回参数,如记录集,函数只能返回值或者表对象。存储过程的参数有in,out,inout三种,存储过程声明时不需要返回类型。

2、函数:函数参数只有in,而函数需要描述返回类型,且函数中必须包含一个有效的return语句。

参考资料链接:百度百科-存储过程

参考资料链接:百度百科-函数

简述存储过程和函数在语法上的区别?

就oracle而言:

  1. 参数而言,存储过程可以定义多个传入和传出参数,但是函数可以多个传入,但是只有一个传出,而且要用return

  2. 外部调用方式上有区别 exec <过程名> 但是函数可以直接 select function() from dual;

  3. 下面的语法是拷贝过来的,供参考


    存储过程:

    基本语法:

    create procedure <过程名>(<参数列表,无参时忽略>)

    as|is

    变量声明、初始化

    begin

    业务处理、逻辑代码

    exception

    异常捕获、容错处理

    end <过程名>;

    参数:<参数名> in|out|in out <参数类型,无长度说明> ,如:v_name varchar2

    in:入参

    out:出参

    in out:出入参

    注:as|is表示as或is

    调用语法:

    1)、exec <过程名>;

    2)、execute <过程名>;

    3)、在PL/SQL语句块中直接调用。

    例:

    create or replace procedure up_wap(v_param1 in out varchar2,v_param2 in out varchar2)

    is

    v_temp varchar2(20);

    begin

    dbms_output.put_line('交换前参数1:'||v_param1||' 参数2:'||v_param2);

    v_temp:=v_param1;

    v_param1:=v_param2;

    v_param2:=v_temp;

    dbms_output.put_line('交换后参数1:'||v_param1||' 参数2:'||v_param2);

    exception

    when others then dbms_output.put_line('There is a error when the procedure up_wap executing!');

    end up_wap;

    /

    --调用存储过程

    declare

    v_param1 varchar2(20):='param1';

    v_param2 varchar2(20):='param2';

    begin

    up_wap(v_param1 => v_param1,v_param2 => v_param2);

    end;

    /

    自定义函数(function)

    基本语法:

    create function <函数名>(<参数列表,无参时忽略>)

    return <返回值类型,无长度说明>

    as|is

    变量声明、初始化

    begin

    业务处理、逻辑代码

    return <返回的值>;

    exception

  4. 异常捕获、容错处理

    end <函数名>;

    参数:in 入参

    注:只有入参的类型。

    在存储过程和自定义函数中的参数的传递(入参和出参)不能使用%type或%rowtype匹配,不能使用空值null,但是存储过程可以返回空值。

    例:

    create function uf_select_name_by_id_test(v_id in number)

    return varchar2

    is

    v_name t_test.t_name%type;

    begin

    select t_name into v_name from t_test where t_id=v_id;

    return v_name;

    exception

    when others then dbms_output.put_line('error');

    end uf_select_name_by_id_test;

    /

    select uf_select_name_by_id_test(1) 姓名 from dual;-- select调用

    declare--pl/sql语句块调用

    v_name varchar2(20);

    begin

    v_name:=uf_select_name_by_id_test(1);

    dbms_output.put_line('name = '||v_name);

    end;

    /


标签:函数 信息技术 存储过程 数据库 自然科学

大明白知识网 Copyright © 2020-2022 www.wangpan131.com. Some Rights Reserved.