第十章 存储过程和函数

创建存储过程和函数

创建存储过程

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

[characteristic ...] routine_body

"sp_name"是参数存储过程名称

"proc_parameter"存储过程的参数列表

"characteristic"存储过程的特性

"routine_body"是SQL代码内容,可以用begin...end标志

proc_parameter的每个参数由三个部分构成:输入输出类型、参数名、参数类型

形式:[in|out|inout] param_name type

characteristic参数有多个取值:

language sql:说明routine_body部分由sql语言的语句组成

[not] deterministic:指明存储过程的执行结果是否是确定的。(相同输入得到相同输出,便是确定的)

{contains sql|no sql|reads sql data|modifies sql data}:指明子程序使用sql语句的限制。

contains sql表示子程序包含sql语句,但不包含读或写数据的语句(默认)

no sql表示子程序中不包含sql语句

reads sql data表示子程序包含读数据的语句

modifies sql data表示子程序中包含写数据的语句

mysql> delimiter &&

mysql> create procedure num_from_employee(in emp_id int,out count_num int)

-> reads sql data

-> begin

-> select count(*) into count_num

-> from employee

-> where d_id=emp_id;

-> end &&

创建存储函数

形式如下:

create function sp_name ([func_parameter[...]])

return type

[characteristic...] routine_body

参数意义参照上一个

mysql> delimiter &&

mysql> create function name_from_employee(emp_id int)

-> returns varchar(20)

-> begin

-> return (select name from employee where num=emp_id);

-> end &&

变量的使用

存储过程和函数中可以定义和使用变量。这些变量的作用范围是begin...end程序段中。

a.定义变量

declare var_name[,...] type [default value]

b.变量赋值

set var_name = expr[,var_name = expr]...

还可以使用select ... into语句为变量赋值

select col_name[,...] into var_name[,...] from table_name where condition

col_name 参数表示查询字段名称,var_name是变量名称

定义条件和处理程序

定义条件和处理程序是事先定义程序执行过程中可能遇到的问题,并且可以在处理程序中定义解决这些问题的办法。通过declare关键字来定义

a.定义条件

MySQL中可以使用declare关键字来定义条件。语法如下:

declare condition_name condition for condition_value

condition_value:

sqlstate [value] sqlstate_value | mysql_error_code

b.定义处理程序

declare hander_type handler for condition_value[,...] sp_statement

hander_type:

continue|exit|undo

condition_value:

sqlstate[value] sqlstate_value|condition_name|sqlwarning

|not found|sqlexception|mysql_error_code

光标的使用

a.声明关标

declare cursor_name cursor for select_statement;

b.打开光标

open cursor_name;

c.使用光标

fetch cur_emloyee into var_name[,var_name...];

d.关闭光标

close cursor_name;

时间: 2024-12-21 09:52:45

第十章 存储过程和函数的相关文章

用sql语句导出oracle中的存储过程和函数

用sql语句导出oracle中的存储过程和函数: SET echo off ; SET heading off ; SET feedback off ; SPOOL 'C:/PRC.SQL' replace SELECT CASE WHEN LINE = 1 THEN 'CREATE OR REPLACE ' || TEXT WHEN LINE = MAX_LINE THEN TEXT || CHR(10 ) || '/' ELSE TEXT END FROM USER_SOURCE A LEF

mysql--补充(视图,触发器,事务,存储过程,函数)

一:视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用. 使用视图我们可以把查询过程中的临时表摘出来,用视图去实现,这样以后再想操作该临时表的数据时就无需重写复杂的sql了,直接去视图中查找即可,但视图有明显地效率问题,并且视图是存放在数据库中的,如果我们程序中使用的sql过分依赖数据库中的视图,即强耦合,那就意味着扩展sql极为不便,因此并不推荐使用 1.1 创建视图 #语法:CRE

MySQL存储过程和函数

存储过程和函数的区别 存储过程可以返回多个值,而函数可以返回一个 函数可以嵌入到sql中使用,可以使用select调用:而存储过程不可以 本质差不多 创建存储过程和函数 CREATE PROCEDURE/CREATE FUNCTION 举例子之前,补充SQL中delimiter的用法,delimiter命令用于改变解释器的结束符.例如在定义函数过程中,在函数体内可能出现SQL默认的";"结束符,一旦输入,解释器就开始执行,但是很显然有时候其时并没有定义结束,所以定义函数或者过程之前一般

SQL存储过程和函数

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

mysql事务、触发器、视图、存储过程、函数

存储过程: procedure 概念类似于函数,就是把一段代码封装起来, 当要执行这一段代码的时候,可以通过调用该存储过程来实现. 在封装的语句体里面,可以用if/else, case,while等控制结构. 可以进行sql编程. 查看现有的存储过程: Show procedure status 删除存储过程 Drop procedure 存储过程的名字 调用存储过程 Call 存储过程名字(); 第1个存储过程 ,体会"封装sql" 第2个存储过程, 体会"参数"

第十一章 存储过程和函数

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

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

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

【转】java调用存储过程和函数

一.概述 如果想要执行存储过程,我们应该使用 CallableStatement 接口. CallableStatement 接口继承自PreparedStatement 接口.所以CallableStatement 接口包含有Statement 接口和PreparedStatement 接口定义的全部方法,但是并不是所有的方法我们都要使用,主要使用的方法有这样几个: CallableStatement 常用方法: 返回类型 方法签名 说明 boolean execute() 执行 SQL 语句

存储过程和函数

什么是存储过程 简单说,存储过程就是一条或多条SQL语句的集合,可视为批文件,但是起作用不仅限于批处理.本文主要讲解如何创建存储过程和存储函数以及变量的使用,如何调用.查看.修改.删除存储过程和存储函数等.使用的数据库和表还是之前写JDBC用的数据库和表: create database school; use school; create table student ( studentId int primary key auto_increment not null, studentName