精华内容
下载资源
问答
  • 存储函数

    千次阅读 2015-09-04 00:23:45
    自定义函数 用户自定义函数(user-defined function,UDF)是一种对MySQL扩展的途径,其用法与内置方法相同。 创建自定义函数 CREATE FUNCTION function_name 创建函数名 RETURNS type 返回类型 {STRING|INTEGER|...

    自定义函数

    用户自定义函数(user-defined function,UDF)是一种对MySQL扩展的途径,其用法与内置方法相同。

    创建自定义函数

    CREATE FUNCTION function_name          创建函数名
    RETURNS type                           用声明存储函数返回值得数据类型
    {STRING|INTEGER|REAL|DECIMAL}          类型
    [characteristic...]routine_body        程序主体

    关于函数体

       函数体由合法的SQL语句构成

       函数体可以是简单的SELECT或INSERT语句

       函数体如果为复合结构则使用BEGIN...END语句

       复合结构可以包含声明,循环,控制结构

    例子:创建一个(不带参数)自定义函数(存储函数)

    mysql> CREATE FUNCTION f1() RETURNS VARCHAR(30)
        -> RETURN DATE_FORMAT(NOW(),'%Y%m%d');
    Query OK, 0 rows affected (0.00 sec)

    调用函数:

    mysql>SELECT f1();
    说明:

    DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据。

    DATE_FORMAT(date,format)

    date 参数是合法的日期。format 规定日期/时间的输出格式。

    例子:创建一个(带有参数)自定义函数

    mysql> CREATE FUNCTION f2(num1 SMALLINT UNSIGNED,num2 SMALLINT UNSIGNED)
        -> RETURNS FLOAT(10,2) UNSIGNED
        -> RETURN (num1+num2)/2;
    调用函数:
    mysql>SELECT f2(20,15);  结果为 12.50

    例子:创建在一个(具有复合结构函数体的)自定义函数


    存储函数与存储过程的区别

    存储函数与存储过程十分相似,它存储过程一样,都是由SQL语句和过程式语句所组成的代码片段,并且可以被应用程序和其它SQL语句调用。

    但是,存储函数与存储过程之间仍存在这样几点区别:

        存储函数不能拥有输出参数,这是因为存储函数自身就是输出函数,而存储过程可以拥有输出函数

        可以直接对存储函数进行调用,且不需要CALL语句;而对存储过程的调用,需要使用CALL语句

        存储过程中必须有RETURN语句;而且这条特殊的SQL语句不能不允许包含于存储过程中




    展开全文
  • mysql手册05_存储过程和存储函数

    万次阅读 2020-08-14 21:34:41
    mysql手册05_存储过程和存储函数 存储过程和存储函数是存储在数据库中的一段SQL语句集合。 通过调用存储过程或存储函数,可以简化开发,减少数据在数据库和服务器间的传输。 存储过程和存储函数的区别是:存储过程...

    mysql手册05_存储过程和存储函数


    存储过程和存储函数是存储在数据库中的一段SQL语句集合
    通过调用存储过程或存储函数,可以简化开发,减少数据在数据库和服务器间的传输。
    存储过程和存储函数的区别是:存储函数有返回值

    基本语句:

    注:在创建存储过程时,为了避免冲突,需要临时修改语句结束符号:
    delimiter $
    
    创建存储过程:
    delimiter $
    
    create procedure pro_test1() 
    begin 
    select 'Hello MySQL'; 
    end$
    
    delimiter ;
    
    调用存储过程:
    call pro_test1();
    
    +-------------+
    | Hello MySQL |
    +-------------+
    | Hello MySQL |
    +-------------+
    
    查看存储过程的两种方法:
    select name from mysql.proc where db = "demo01"$
    show procedure status\G;
    
    查看存储过程的定义/封装语句:
    show procedure pro_test1\G;
    
    删除存储过程:
    drop procedure pro_test1;
    

    变量:

    declare定义变量和set设置变量值:
    
    create procedure pro_test1() 
    begin 
    declare num int default 10;
    set num = num+10;
    select concat('num的值为:',num);
    end$
    
    调用存储过程:
    call pro_test1();
    +-------------------------------+
    | concat('num的值为:',num)     |
    +-------------------------------+
    | num的值为:20                 |
    +-------------------------------+
    
    select..into..将查询结果赋值给变量:
    
    create procedure pro_test2() 
    begin 
    declare num int;
    select count(*) into num from city;
    select concat('city表中的记录数为:',num);
    end$
    
    call pro_test2();
    +--------------------------------------------+
    | concat('city表中的记录数为:',num)         |
    +--------------------------------------------+
    | city表中的记录数为:4                      |
    +--------------------------------------------+
    

    if条件判断:

    create procedure pro_test3()
    begin 
    declare height int default 175;
    declare description varchar(50) default '';
    if height >=180 then
    	set description='高个子';
    elseif height >=170 and height<180 then
    	set description='中等个子';
    else
    	set description='小个子';
    end if;
    select concat('身高:', height,'对应的类型为:',description);
    end$
    
    call pro_test3();
    +-----------------------------------------------------------------+
    | concat('身高:', height,'对应的类型为:',description)           |
    +-----------------------------------------------------------------+
    | 身高:175对应的类型为:中等个子                                 |
    +-----------------------------------------------------------------+
    

    输入参数:
    根据传递的身高变量,判定身高类型

    create procedure pro_test4(in height int)
    begin 
    declare description varchar(50) default '';
    if height >=180 then
    	set description='高个子';
    elseif height >=170 and height<180 then
    	set description='中等个子';
    else
    	set description='小个子';
    end if;
    select concat('身高:', height,'对应的类型为:',description);
    end$
    
    call pro_test4(198);
    +-----------------------------------------------------------------+
    | concat('身高:', height,'对应的类型为:',description)           |
    +-----------------------------------------------------------------+
    | 身高:198对应的类型为:高个子                                   |
    +-----------------------------------------------------------------+
    
    call pro_test4(178);
    +-----------------------------------------------------------------+
    | concat('身高:', height,'对应的类型为:',description)           |
    +-----------------------------------------------------------------+
    | 身高:178对应的类型为:中等个子                                 |
    +-----------------------------------------------------------------+
    
    call pro_test4(155);
    +-----------------------------------------------------------------+
    | concat('身高:', height,'对应的类型为:',description)           |
    +-----------------------------------------------------------------+
    | 身高:155对应的类型为:小个子                                   |
    +-----------------------------------------------------------------+
    

    输出参数:
    根据传入的身高变量,获取身高类型并返回

    create procedure pro_test5(in height int, out description varchar(10))
    begin 
    if height >=180 then
    	set description='高个子';
    elseif height >=170 and height<180 then
    	set description='中等个子';
    else
    	set description='小个子';
    end if;
    end$
    
    call pro_test5(188,@description);
    select @description;
    +--------------+
    | @description |
    +--------------+
    | 高个子       |
    +--------------+
    注:@a表示用户会话变量,连接关闭时将释放。@@a表示系统变量。
    

    case结构:
    给定月份,计算所在季度

    create procedure pro_test6(mon int)
    begin
    declare result varchar(10);
    case
    when mon>=1 and mon<=3 then
    set result='第一季度';
    when mon>=4 and mon<=6 then
    set result='第二季度';
    when mon>=7 and mon<=9 then
    set result='第三季度';
    else
    set result='第四季度';
    end case;
    select concat('传递的月份为:', mon ,',计算出的结果为:', result) as content;
    end$
    
    call pro_test6(9);
    +---------------------------------------------------------------+
    | content                                                       |
    +---------------------------------------------------------------+
    | 传递的月份为:9,计算出的结果为:第三季度                     |
    +---------------------------------------------------------------+
    

    while循环:
    计算从1加到n

    create procedure pro_test7(n int)
    begin
    	declare total int default 0;
    	declare num int default 1;
    	while num <= n do
    		set total = total + num;
    		set num = num +1;
    	end while; 
    	select total;
    end$
    
    call pro_test7(10);
    +-------+
    | total |
    +-------+
    |    55 |
    +-------+
    

    repeat循环:
    计算从1加到n
    注意until语句后面没有分号!

    create procedure pro_test8(n int)
    begin
    	declare total int default 0;
    	repeat
    		set total = total + n;
    		set n = n-1;
    		until n=0
    	end repeat;
    	select total;
    end$
    
    call pro_test7(10);
    +-------+
    | total |
    +-------+
    |    55 |
    +-------+
    

    loop循环,leave退出:
    计算从1加到n

    create procedure pro_test9(n int)
    begin
    	declare total int default 0;
    	c:loop
    	set total=total+n;
    	set n = n-1;
    	if n<=0 then
    		leave c;
    	end if; 
    	end loop c;
    	select total;
    end$
    
    call pro_test9(10);
    +-------+
    | total |
    +-------+
    |    55 |
    +-------+
    

    游标:用来存储查询结果集:
    一次fetch读取一行数据
    若fetch次数超过数据行数,将报错

    准备工作:
    create table emp(
    	id int(11) not null auto_increment,
    	name varchar(50) not null comment '姓名',
    	age int(11) comment '年龄',
    	salary int(11) comment '薪水',
    	primary key(id)
    )engine=innodb default charset=utf8;
    
    insert into emp(id,name,age,salary) values(null,'金毛狮王',55,3800),(null,'白眉鹰王',60,4000),(null,'青翼蝠王',38,2800),(null,'紫衫龙王',42,1800);
    
    查询emp表的数据并逐行获取进行展示:
    create procedure pro_test10()
    begin
    	declare e_id int(11);
    	declare e_name varchar(50);
    	declare e_age int(11);
    	declare e_salary int(11);
    	declare emp_result cursor for select * from emp;
    	
    	open emp_result;
    	
    	fetch emp_result into e_id,e_name,e_age,e_salary;
    	select concat('id=',e_id,', name=',e_name,', age=',e_age,', salary=',e_salary);
    	
    	fetch emp_result into e_id,e_name,e_age,e_salary;
    	select concat('id=',e_id,', name=',e_name,', age=',e_age,', salary=',e_salary);
    	
    	close emp_result;
    end$
    
    call pro_test10();
    +-------------------------------------------------------------------------+
    | concat('id=',e_id,', name=',e_name,', age=',e_age,', salary=',e_salary) |
    +-------------------------------------------------------------------------+
    | id=1, name=金毛狮王, age=55, salary=3800                                |
    +-------------------------------------------------------------------------+
    1 row in set (0.05 sec)
    
    +-------------------------------------------------------------------------+
    | concat('id=',e_id,', name=',e_name,', age=',e_age,', salary=',e_salary) |
    +-------------------------------------------------------------------------+
    | id=2, name=白眉鹰王, age=60, salary=4000                                |
    +-------------------------------------------------------------------------+
    1 row in set (0.05 sec)
    

    循环获取游标数据:
    注:退出条件的声明必须紧跟在游标声明之后!

    查询emp表的数据并逐行获取进行展示:
    create procedure pro_test11()
    begin
    	declare e_id int(11);
    	declare e_name varchar(50);
    	declare e_age int(11);
    	declare e_salary int(11);
    	declare has_data int default 1;
    	
    	declare emp_result cursor for select * from emp;
    	declare exit handler for not found set has_data=0;
    	
    	open emp_result;
    	
    	repeat
    		fetch emp_result into e_id,e_name,e_age,e_salary;
    		select concat('id=',e_id,', name=',e_name,', age=',e_age,', salary=',e_salary);
    		until has_data=0
    	end repeat;
    	
    	close emp_result;
    end$
    
    call pro_test11();
    +-------------------------------------------------------------------------+
    | concat('id=',e_id,', name=',e_name,', age=',e_age,', salary=',e_salary) |
    +-------------------------------------------------------------------------+
    | id=1, name=金毛狮王, age=55, salary=3800                                |
    +-------------------------------------------------------------------------+
    1 row in set (0.00 sec)
    
    +-------------------------------------------------------------------------+
    | concat('id=',e_id,', name=',e_name,', age=',e_age,', salary=',e_salary) |
    +-------------------------------------------------------------------------+
    | id=2, name=白眉鹰王, age=60, salary=4000                                |
    +-------------------------------------------------------------------------+
    1 row in set (0.00 sec)
    
    +-------------------------------------------------------------------------+
    | concat('id=',e_id,', name=',e_name,', age=',e_age,', salary=',e_salary) |
    +-------------------------------------------------------------------------+
    | id=3, name=青翼蝠王, age=38, salary=2800                                |
    +-------------------------------------------------------------------------+
    1 row in set (0.00 sec)
    
    +-------------------------------------------------------------------------+
    | concat('id=',e_id,', name=',e_name,', age=',e_age,', salary=',e_salary) |
    +-------------------------------------------------------------------------+
    | id=4, name=紫衫龙王, age=42, salary=1800                                |
    +-------------------------------------------------------------------------+
    1 row in set (0.01 sec)
    

    存储函数:

    定义一个存储函数,获取满足条件的总记录数:
    create function fun1(countryId int)
    returns int
    begin
    	declare cnum int;
    	select count(*) into cnum from city where country_id = countryId;
    	return cnum;
    end$
    
    调用存储函数:
    select fun1(1);
    +------+
    | $    |
    +------+
    |    3 |
    +------+
    
    删除存储函数:
    drop function fun1;
    
    注:若创建存储函数报错:
    This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)
    使用以下命令解决:
    set global log_bin_trust_function_creators=1$
    
    展开全文
  • MySQL存储函数

    千次阅读 2019-01-11 17:38:43
    MySQL存储函数(自定义函数),函数一般用于计算和返回一个值,可以将经常需要使用的计算或功能写成一个函数。 1、创建存储函数 在MySQL中,创建存储函数使用CREATE FUNCTION关键字,其基本形式如下: CREATE ...

    MySQL存储函数(自定义函数),函数一般用于计算和返回一个值,可以将经常需要使用的计算或功能写成一个函数。

    1、创建存储函数

    在MySQL中,创建存储函数使用CREATE FUNCTION关键字,其基本形式如下:

    CREATE FUNCTION func_name ([param_name type[,...]])
    RETURNS type
    [characteristic ...] 
    BEGIN
    	routine_body
    END;

    参数说明:

    (1)func_name :存储函数的名称。

    (2)param_name type:可选项,指定存储函数的参数。type参数用于指定存储函数的参数类型,该类型可以是MySQL数据库中所有支持的类型。

    (3)RETURNS type:指定返回值的类型。

    (4)characteristic:可选项,指定存储函数的特性。

    (5)routine_body:SQL代码内容。

    2、调用存储函数

    在MySQL中,存储函数的使用方法与MySQL内部函数的使用方法基本相同。用户自定义的存储函数与MySQL内部函数性质相同。区别在于,存储函数是用户自定义的。而内部函数由MySQL自带。其语法结构如下:

    SELECT func_name([parameter[,…]]);

    示例:创建存储函数,实现根据用户编号,获取用户姓名功能。

    (1)先创建tb_user(用户信息表),并添加数据。

    -- 创建用户信息表
    CREATE TABLE IF NOT EXISTS tb_user
    (
    	id INT AUTO_INCREMENT PRIMARY KEY COMMENT '用户编号',
    	name VARCHAR(50) NOT NULL COMMENT '用户姓名'
    ) COMMENT = '用户信息表';
    
    -- 添加数据
    INSERT INTO tb_user(name) VALUES('pan_junbiao的博客');
    INSERT INTO tb_user(name) VALUES('KevinPan');
    INSERT INTO tb_user(name) VALUES('pan_junbiao');
    INSERT INTO tb_user(name) VALUES('阿标');
    INSERT INTO tb_user(name) VALUES('panjunbiao');
    INSERT INTO tb_user(name) VALUES('pan_junbiao的CSDN博客');
    INSERT INTO tb_user(name) VALUES('https://blog.csdn.net/pan_junbiao');

    查询数据结果:

    (2)创建存储函数

    -- 创建存储函数
    DROP FUNCTION IF EXISTS func_user;
    CREATE FUNCTION func_user(in_id INT)
    RETURNS VARCHAR(50)
    BEGIN
    	DECLARE out_name VARCHAR(50);
    
    	SELECT name INTO out_name FROM tb_user
    	WHERE id = in_id;
    
    	RETURN out_name;
    END;

    (3)调用存储函数

    -- 调用存储函数
    SELECT func_user(1);
    SELECT func_user(2);
    SELECT func_user(3);
    SELECT func_user(4);
    SELECT func_user(5);
    SELECT func_user(6);
    SELECT func_user(7);

    执行结果:

    3、修改存储函数

    MySQL中,通过ALTER FUNCTION 语句来修改存储函数,其语法格式如下:

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

    上面这个语法结构是MySQL官方给出的,修改的内容可以包含SQL语句也可以不包含,既可以是读数据的SQL也可以是修改数据的SQL还有权限。此外在修改function的时候还需要注意你不能使用这个语句来修改函数的参数以及函数体,如果你想改变这些的话你就需要删除掉这个函数然后重新创建。

    4、删除存储函数

    MySQL中使用DROP FUNCTION语句来删除存储函数。

    示例:删除存储函数。

    DROP FUNCTION IF EXISTS func_user;

     

    其它补充:

    如果你在创建存储函数时提示以下错误:

    [Err] 1418 - This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is
    enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)

    这是我们开启了bin-log, 我们就必须指定我们的函数是否是
    1 DETERMINISTIC 不确定的
    2 NO SQL 没有SQl语句,当然也不会修改数据
    3 READS SQL DATA 只是读取数据,当然也不会修改数据
    4 MODIFIES SQL DATA 要修改数据
    5 CONTAINS SQL 包含了SQL语句

    其中在function里面,只有 DETERMINISTIC, NO SQL 和 READS SQL DATA 被支持。如果我们开启了 bin-log, 我们就必须为我们的function指定一个参数。

    解决方法:

    解决办法也有两种, 第一种是在创建子程序(存储过程、函数、触发器)时,声明为DETERMINISTIC或NO SQL与READS SQL DATA中的一个, 例如: CREATE DEFINER = CURRENT_USER PROCEDURE `NewProc`()     DETERMINISTIC BEGIN #Routine body goes here... END;;

    第二种是信任子程序的创建者,禁止创建、修改子程序时对SUPER权限的要求,设置log_bin_trust_routine_creators全局系统变量为1。

    设置方法有三种:

    (1)在客户端上执行 SET GLOBAL log_bin_trust_function_creators = 1。

    (2)MySQL启动时,加上--log-bin-trust-function-creators选贤,参数设置为1。

    (3)在MySQL配置文件my.ini或my.cnf中的[mysqld]段上加log-bin-trust-function-creators=1。

    展开全文
  • 创建存储函数

    千次阅读 2016-06-19 11:28:22
    创建存储函数

    创建存储函数

    CREATE FUNCTION sp_name ( [func_parameter[,...]] )
    RETURNS type
    [ characteristic... ] routine_body
    sp_name 参数是存储函数的名称;func_parameter 表示存储函数的参数列表;RETURNS type 指定返回值的
    类型;characteristic 参数指定存储过程的特性,该参数的取值与存储过程中的取值是一样的;routine_body 参数
    是 SQL 代码的内容,可以用 BEGIN...END 来标志 SQL 代码的开始和结束;
    func_parameter 可以由多个参数组成,其中每个参数由参数名称和参数类型组成,其形式如下:
    param_name type 其中,param_name 参数是存储函数的参数名称;type 参数指定存储函数的参数类型,
    该类型可以是 MySQL 数据库的任意数据类型;

    eg:

    DELIMITER &&
    CREATE FUNCTION fun_bok (bookId INT)
    RETURNS VARCHAR(20)
    BEGIN
    RETURN (SELECT bookName FROM t_book WHERE id=bookId);
    END
    &&
    DELIMITER ;

    SELECT func_book(1);

    展开全文
  • 数据库存储过程与存储函数

    千次阅读 2018-12-09 18:49:14
    1. 存储过程、存储函数概念  存储过程是一组为了完成特定功能的SQL语句集,经过编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它,叫做存储过程、存储函数。 2. ...
  • 存储过程和存储函数的区别

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

    万次阅读 多人点赞 2018-11-03 17:00:19
    10.1.1 创建存储过程 存储过程就是一条或者多条SQL语句的集合... 创建存储过程的语句为 CREATE PROCEDURE,创建存储函数的语句为CREATE FUNCTION。 调用存储过程的语句为CALL。 调用存储函数的形式就像调用MyS...
  • PL/SQL存储函数,存储过程

    千次阅读 2016-10-30 17:04:05
    存储过程和存储函数 存储过程和存储函数跟我们知道的表、视图、索引、序列、同义词等一样是我们数据中的对象。 笔记教程见:https://github.com/caojx-git/learn/blob/master/notes/oracle/PLSQL.sql 1.1什么是...
  • ORACLE 创建存储过程,存储函数

    千次阅读 2018-06-01 15:11:25
    基本概念存储过程和存储函数相当与一个东西。存储过程没有返回值。存储函数有返回值。基本语法create or replace procedure 名字--create or replace 意思是创建或者替换as--可以在此定义参数begin 语句;end;例:...
  • 存储过程,存储函数(Oracle)存储过程和存储函数指存储在数据库中供所有用户程序调用的子程序叫存储过程、存储函数。存储过程和存储函数的区别?存储函数:可以通过return 语句返回函数值。存储过程:不能除此之外...
  • JDBC调用存储过程与存储函数

    万次阅读 多人点赞 2019-01-26 11:28:33
    在JDBC API中提供了调用存储过程的方法,通过CallableStatement对象进行操作。CallableStatement对象...CallableStatement对象主要用于执行数据库中定义的存储过程和存储函数,其调用方法如下: 调用存储过程:{...
  • Oracle之存储过程和存储函数

    千次阅读 2019-01-31 18:59:34
    存储过程和存储函数是用来让java代码来调用的.  存储过程和存储函数其实就是拿qlspl写的子程序,存储过程没有返回值,存储函数可以用return 返回值 创建一个存储过程  调用方式有两种  带参的存储...
  • MySQL存储函数和存储过程的区别

    千次阅读 2017-11-22 13:53:08
    存储过程与存储函数的区别 1:存储函数和存储过程统称为存储例程(store routine),存储函数的限制比较多,例如不能用临时表,只能用表变量,而存储过程的限制较少,存储过程的实现功能要复杂些,而函数的实现功能针对性...
  • mysql存储过程和存储函数练习题

    千次阅读 2020-05-28 09:12:28
    课题 实验五 存储过程和存储函数 目的要求 1. 掌握通过SQL语句CREATE PROCEDURE创建存储过程的方法。 2. 掌握使用SQL语句CALL调用存储过程的方法。 3. 掌握使用SQL语句ALTER PROCEDURE修改存储过程的方法。 4. 掌握...
  • oracle中的存储过程和存储函数的区别

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

    千次阅读 2019-04-29 16:39:53
    关于MyBatis调用存储函数,我在网上找到了两种方法。 1.Select方法 <select id="getFunction" parameterType="int" resultType="string">  select dbo.F_NowName(#{0}) </select> 直接select该函数,...
  • Oracle数据库存储过程和存储函数

    千次阅读 多人点赞 2013-04-13 22:22:04
    存储过程和存储函数    指存储在数据库中供所有用户程序调用的子程序叫存储过程、存储函数。 存储过程没有返回值。存储函数有返回值    创建存储过程  用CREATE PROCEDURE命令建立存储过程和存储函数。 ...
  • 之前提到过好多次存储函数,这次咱们就来具体看下。它呢,是返回单个值的特殊类型的存储程序。我们通常使用存储的函数来封装在SQL语句或存储的程序中可重用的常用公式或业务规则。与存储过程不同,我们可以在SQL语句...
  • PLSQL存储过程及存储函数

    千次阅读 2016-03-27 18:02:31
    1.存储过程与存储函数的区别: 存储过程无返回值,存储函数有返回值。 2.存储过程:demo1: declare   --声明一个记录类型  type emp_record is record(  v_sal employees.salary%type,--动态的获取变量的类型...
  • PLSQL学习中的存储过程和存储函数

    千次阅读 2018-05-10 21:19:20
    一、存储过程和存储函数说明 1、存储在数据库中供所有用户程序调用的子程序叫存储过程、存储函数。 2、其实存储函数与存储过程一样,也能返回多个值。那么,什么时候使用存储过程/存储函数? 这里,我们还是遵循...
  • MySQL入门之存储过程与存储函数

    千次阅读 2017-07-22 00:03:25
    MySQL入门之存储过程与存储函数
  • MySQL存储过程与存储函数的区别

    千次阅读 2018-01-26 11:11:51
    一.MySQL存储过程与存储函数的区别 https://www.cnblogs.com/rogge7/p/5300605.html 语法定义上的区别就不说了,说一下其他的。如果有不正确的地方,还请大家指正。 1、总述 存储函数和存储过程统称为...
  • MySQL基础-怎么创建存储函数

    千次阅读 2019-05-05 12:50:25
    存储函数是由SQL语句和过程式语句所组成的代码片段,它可以被应用程序和其他SQL语句所调用,在MySQL中可以通过CREATE FUNCTION语句来创建存储函数 存储函数就是返回单个值的特殊类型的存储程序,接下来将在文章中为...
  • 数据库中自定义存储函数详解

    千次阅读 2016-04-02 15:10:59
    数据库中自定义存储函数详解
  • 存储过程(存储函数):指存储在数据库中供所有用户程序调用的子程序(PL/SQL程序)。 存储过程没有返回值,存储函数有返回值(return语句,要有返回值的类型)。 区别:存储函数可以有返回值,而存储过程没有返回值。 ...
  • 函数指针 typedef 用法 回调函数 结构体存储函数地址
  • 存储过程 1:概述: 存储过程是被命名的 PL/SQL 块,存储于数据库中,是数据库对象的一种。 应用程序可以调用存储过程,执行相应的逻辑。 2:存储过程与存储函数区别 ...存储过程与存储函数都可以封装...2、 存储函数
  • 存储过程与存储函数的概述存储过程:理解为java中的void方法,用于处理功能,但无返回值。存储函数:理解为java中非void的方法,不但可以处理功能,还能返回信息。举例:需求(打印出"hello everyone")--...
  • 注意:关于示例所讲到的存储过程和函数及数据库表的创建,可通过查看之前的文章有进行介绍。...存储过程和存储函数创建以后,用户可以查看存储过程和存储函数的状态和定义。用户可以通过SHOW STATUS语句查看...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,939,359
精华内容 775,743
关键字:

存储函数