#0.准备工作
CREATE DATABASE test15_pro_func;
USE test15_pro_func;
#1. 创建存储过程insert_user(),实现传入用户名和密码,插入到admin表中
CREATE TABLE admin(
id INT PRIMARY KEY AUTO_INCREMENT,
user_name VARCHAR(15) NOT NULL,
pwd VARCHAR(25) NOT NULL
);
DELIMITER //
CREATE PROCEDURE insert_user(IN `name` VARCHAR(15), IN `password` VARCHAR(25))
BEGIN
INSERT INTO admin(user_name,pwd) VALUES(`name`,`password`);
END //
DELIMITER ;
CALL insert_user('huaqiang','abc123');
SELECT * FROM admin;
#2. 创建存储过程get_phone(),实现传入女神编号,返回女神姓名和女神电话
CREATE TABLE beauty(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(15) NOT NULL,
phone VARCHAR(15) UNIQUE,
birth DATE
);
INSERT INTO beauty(NAME,phone,birth)
VALUES
('朱茵','13201233453','1982-02-12'),
('孙燕姿','13501233653','1980-12-09'),
('田馥甄','13651238755','1983-08-21'),
('邓紫棋','17843283452','1991-11-12'),
('刘若英','18635575464','1989-05-18'),
('杨超越','13761238755','1994-05-11');
SELECT * FROM beauty;
DELIMITER //
CREATE PROCEDURE get_phone(IN b_id  INT,OUT b_phone VARCHAR(15))
BEGIN
SELECT phone INTO b_phone
FROM beauty
WHERE b_id=id;
END //
DELIMITER ;
SET @b_id := 1;
CALL get_phone(1,@b_phone);
SELECT @b_phone;
#3. 创建存储过程date_diff(),实现传入两个女神生日,返回日期间隔大小
DELIMITER //
CREATE PROCEDURE data_diff(IN d1 DATE, IN d2 DATE,OUT d INT)
BEGIN
SELECT DATEDIFF(d1,d2) INTO d # 返回天数 差
FROM DUAL;
END //
DELIMITER ;
CALL data_diff('2001-08-07','2001-08-08',@res);
SELECT @res;
#4. 创建存储过程format_date(),实现传入一个日期,格式化成xx年xx月xx日并返回
DELIMITER //
CREATE PROCEDURE format_date( IN d1 DATE,OUT  str VARCHAR(9))
BEGIN
SELECT DATE_FORMAT(d1,'%y年%m月%d日') INTO str;
END//
DELIMITER ;
CALL format_date('2001-08-07' ,@str);
SELECT @str;
#5. 创建存储过程beauty_limit(),根据传入的起始索引和条目数,查询女神表的记录
DELIMITER //
CREATE PROCEDURE beauty_limit(IN beg INT, IN size INT)
BEGIN
SELECT * FROM beauty
LIMIT beg, size;
END //
DELIMITER ;
CALL beauty_limit(0,10);
#创建带inout模式参数的存储过程
DELIMITER //
CREATE PROCEDURE get_inout(INOUT  b_id INT)
BEGIN
SELECT COUNT(*) INTO b_id
FROM beauty
WHERE id=b_id;
END //
DELIMITER ;
DROP PROCEDURE get_into;
SET @b_id=100;
CALL get_inout(@b_id);
SELECT @b_id;
# 查看存储过程信息
SHOW CREATE PROCEDURE get_inout;
SHOW PROCEDURE STATUS LIKE 'get_inout';
#0. 准备工作
USE test15_pro_func;
CREATE TABLE employees
AS
SELECT * FROM atguigudb.`employees`;
CREATE TABLE departments
AS
SELECT * FROM atguigudb.`departments`;
#无参有返回
#1. 创建函数get_count(),返回公司的员工个数
DELIMITER //
CREATE FUNCTION get_count()
RETURNS INT
BEGIN RETURN (SELECT COUNT(*) FROM employees);
END //
DELIMITER ;
#有参有返回
#2. 创建函数ename_salary(),根据员工姓名,返回它的工资
DESC employees;
DELIMITER //
CREATE FUNCTION ename_salary(`name` VARCHAR(25)) RETURNS DOUBLE
BEGIN
RETURN (
SELECT salary FROM employees WHERE last_name=`name`
);
END //
DELIMITER ;
#3. 创建函数dept_sal() ,根据部门名,返回该部门的平均工资
DELIMITER //
CREATE FUNCTION dept_sal(dep_name VARCHAR(20)) RETURNS DOUBLE
BEGIN
RETURN (
SELECT AVG(salary)
FROM departments,employees
WHERE department_name=dep_name
AND departments.`department_id`=employees.`department_id`
GROUP BY department_name
);
END//
DELIMITER ;
DROP FUNCTION dept_sal;
DESC departments;
SELECT * FROM departments;
SELECT dept_sal('Administration');
#4. 创建函数add_float(),实现传入两个float,返回二者之和
DELIMITER //
CREATE FUNCTION add_float(f1 FLOAT,f2 FLOAT) RETURNS FLOAT
BEGIN
RETURN (SELECT f1+f2 ); END //
DELIMITER ;
SELECT add_float(1,2);

存储过程和存储函数 练习相关推荐

  1. Oracle存储过程和存储函数创建

    select * from emp; -----------------存储过程------------------------ --定义create[or replace] procedure 存储 ...

  2. 编程开发之--Oracle数据库--存储过程和存储函数(2)

    上一小结我们简单介绍了存储过程和存储函数,对存储过程和存储函数有了一个基本的了解,接下来介绍在java程序中如何调用我们创建的存储过程和存储函数 1.在应用程序中调用我们的存储过程 创建一个简单的Ja ...

  3. Oralce数据库之存储过程、存储函数、触发器和数据字典

    Oracle数据库总结 Oracle数据库之集合运算 Oracle数据库之数据处理 Oracle数据库之建表和管理表 Oracle数据库之对象视图.索引.序列.同义词 一.存储过程和存储函数 1.概念 ...

  4. java怎么调用存储函数_java中调用存储过程或存储函数的方法

    java中调用存储过程或存储函数的方法 1.调用存储过程:CallableStatement clstmt = null;try {clstmt = conn.prepareCall("{c ...

  5. Oracle的存储过程和存储函数

    存储过程和存储函数:指存储在数据库中供所有用户程序调用的子程序叫做存储过程.存储函数. 他们也是数据库的对象,类似于表.视图.索引.序列.同义词等. 存储函数可以用return返回值,而存储过程不可以 ...

  6. oracle as 不可以省略,Oracle:存储过程,存储函数

    什么是存储过程和存储函数:指存储在数据库中供所有用户程序调用的子程序叫做存储过程.存储函数. 这个子程序是用PL/SQL写的.可以用Java程序调用,就是完成特定功能的子程序. 用create pro ...

  7. Mysql存储过程和存储函数

    存储过程和存储函数 前言 存储过程的相关操作 创建 调用 查看 删除 语法 变量的定义与赋值 if条件判断 参数 case结构 while循环 repeat循环结构 loop语句 leave语句 游标 ...

  8. oracle 查看函数被哪些触发器引用_oracle如何查看存储过程,存储函数,触发器的具体内容...

    (1)set serveroutput on 实现plsql developer 打印输出 (2)如何查看存储过程,存储函数,触发器的内容 查 user_sources表 eg:查询GET_DEPT_ ...

  9. oracle存储过程与函数的区别及作用,Oracle存储过程与存储函数-入门

    文章思维导图 一. 存储过程和存储函数的定义 定义:存储在数据库中,供所有用户程序调用的子程序叫做存储过程/存储函数.复杂点的解释:存储过程(Stored Procedure),就是一组用于完成特定数 ...

  10. java 执行oracle 存储过程_oracle--在java中调用存储过程和存储函数

    在java中调用存储过程和存储函数 存储过程: 查询某个员工的姓名 月薪 职位: create or replace procedure queryempinfo(eno in number, pen ...

最新文章

  1. 数字信号处理中卷积的图形化动态解释
  2. 选择排序的基本原理及实现
  3. 【NLP】 理解NLP中网红特征抽取器Tranformer
  4. OAuth 2.0初学者指南
  5. 虚拟化精华问答 | 虚拟化的关键技术有哪些?
  6. Kafka : kafka无法消费的情况
  7. php 简繁体转换类库,简体中文转换为繁体中文的PHP函数
  8. Android手机检测存储卡软件,SD Insight-洞察SD卡(检测SD卡真假)app下载1.5.7安卓最新版-西西软件下载...
  9. 基于JSP网上购书系统
  10. 海思demo删减_从零开始在海思Hi3559a运行demo
  11. 315前瞻:哪些互联网消费领域今年可能上榜?
  12. ElasticSearch--Field的使用
  13. 微信小程序实现可移动悬浮按钮(超简单)
  14. Summer School实验
  15. Hadoop 学习笔记(三)常用命令
  16. THANK YOU FOR YOUR CONCERN, SIOBAN AND ANTHONY
  17. word字号选项设置为中文字号
  18. h.265不是视频压缩技术未来的5个原因
  19. 环信即时通讯云iOS版V2.0.9.1服务评测
  20. 三、软考·系统架构师——计算机网络基础

热门文章

  1. 《数据统计分析及R语言编程(第二版)》练习题总结(一)
  2. ios pan手势滑动消失动画_iOS 当你的左滑手势失效时的解决方案
  3. Axon Framework简介
  4. DataGrip 太好使了
  5. c语言基础代码(基础代码编程)
  6. 【DFS题型九/双向DFS】王子救公主
  7. c语言中:=和==的区别是什么?
  8. 从 sketch 中获取颜色、字体组件内容
  9. [001]code blocks - error: expected identifier or ‘(‘ before ‘int‘|
  10. 码出一个高颜值原生折线图(新增柱状图、环形图)