码迷,mamicode.com
首页 > 其他好文 > 详细

存储过程和函数

时间:2019-01-05 23:59:24      阅读:342      评论:0      收藏:0      [点我收藏+]

标签:语句   组成   default   创建   call   定义条件   调用函数   包含   security   

存储过程和函数语法以及调用

存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后调用不需要再次编译,用户通过指定存储过程的名

字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象

一、创建存储过程和函数

1、创建存储过程

MySQL中创建存储过程的语句是create procedure语句,使用call语句调用存储过程。存储过程也可以调用其它存储过程。

语法:

create procedure sp_name([proc_parameter])
[characteristics...] routine_body

create procedure用来创建存储过程的关键字。sp_name是存储过程名称,proc_parameter为存储过程参数列表。列表形式如下:

[IN | OUT | OUT] param_name type

IN表示入参,OUT表示出参,INOUT表示既可以入参也可以出参。param_name表示参数名称,type表示参数类型。

characteristics指定存储的过程的特性,有以下几种取值:

(1)、LANGUAGE SQL:说明routine_body部分由SQL组成,当前系统支持的语言为SQL。SQL是LANGUAGE特性的唯一值

(2)、[NOT] DETERMINITIC:指明存储过程的结果是否确定,DETERMINITIC表示结果确定的。每次执行存储过程,相同的输入得到相同的输出。NOT DETERMINITIC表示结果                不确定的,相同的输出可能不同的输出,默认为NOT DETERMINITIC。

(3)、{CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA}:指明子程序使用SQL的限制。CONTAINS SQL表明子程序包含SQL语句,但是不包含读写数据的               语句。NO SQL表名子程序不包含SQL语句。READS SQL DATA表名子程序包含读数据的语句。MODIFIES SQL DATA表明子程序包含写数据的语句。默认情况下,系统指               定默认值CONTAINS SQL。

(4)、SQL SECURITY{DEFINER | INVOKER}:指明谁有执行权限。DEFINER表示定义着可以执行,INVOKER表示有权限的调用者也可以执行。默认值是DEFINER。

(5)、COMMENT ‘string‘:注释信息,用来描述存储过程和函数

routine_body是SQL代码的内容。可以用BEGIN........END来表示SQL代码的开始和技术

例子:

create procedure test()
begin
select * from student;
end;

2、创建函数

创建函数需要用到CREATE FUNCTION关键字。基本语法格式如下:

create function func_name([proc_parameter])
returns type
[characteristics...] routine_body

create function是创建函数的关键字,func_name是函数名。proc_parameter是参数,有IN OUT INOUT三种,characteristics表示函数的特性,和存储过程一样,不再重复叙述。RETURNS type表示函数返回数据的类型。

例子:

create function test_func()
returns char(50)
return (select b from student where a = 1);
select test_func()                               # 调用函数

如果return语句返回值的类型不同于returns子句指定类型的值,返回值被强制为恰当的类型。

3、变量的使用

变量可以在子程序中声明并使用,这些变量的作用范围是BEGIN.....END程序中。

(1)、变量的定义

DECLARE var_name [, var_name].. data_type [DEFAULT value]

var_name 是局部变量的名称,DEFALULT给变量一个默认值。值除了可以给常数,还可以给一个表达式。如果没有默认值,则值为NULL

(2)、为变量赋值

定义变量后,为变量赋值可以改变变量的默认值。MySQL使用set语句为变量赋值。语法格式如下:

SET var_name = expr [,var_name = expr]....

MySQL还可以通过select....into.为变量复制

select colname[,....] into var_name[,....] table_expr

4、定义条件和处理程序

 

存储过程和函数

标签:语句   组成   default   创建   call   定义条件   调用函数   包含   security   

原文地址:https://www.cnblogs.com/jkin/p/10226717.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!