存储过程和存储函数 练习
#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);
存储过程和存储函数 练习相关推荐
- Oracle存储过程和存储函数创建
select * from emp; -----------------存储过程------------------------ --定义create[or replace] procedure 存储 ...
- 编程开发之--Oracle数据库--存储过程和存储函数(2)
上一小结我们简单介绍了存储过程和存储函数,对存储过程和存储函数有了一个基本的了解,接下来介绍在java程序中如何调用我们创建的存储过程和存储函数 1.在应用程序中调用我们的存储过程 创建一个简单的Ja ...
- Oralce数据库之存储过程、存储函数、触发器和数据字典
Oracle数据库总结 Oracle数据库之集合运算 Oracle数据库之数据处理 Oracle数据库之建表和管理表 Oracle数据库之对象视图.索引.序列.同义词 一.存储过程和存储函数 1.概念 ...
- java怎么调用存储函数_java中调用存储过程或存储函数的方法
java中调用存储过程或存储函数的方法 1.调用存储过程:CallableStatement clstmt = null;try {clstmt = conn.prepareCall("{c ...
- Oracle的存储过程和存储函数
存储过程和存储函数:指存储在数据库中供所有用户程序调用的子程序叫做存储过程.存储函数. 他们也是数据库的对象,类似于表.视图.索引.序列.同义词等. 存储函数可以用return返回值,而存储过程不可以 ...
- oracle as 不可以省略,Oracle:存储过程,存储函数
什么是存储过程和存储函数:指存储在数据库中供所有用户程序调用的子程序叫做存储过程.存储函数. 这个子程序是用PL/SQL写的.可以用Java程序调用,就是完成特定功能的子程序. 用create pro ...
- Mysql存储过程和存储函数
存储过程和存储函数 前言 存储过程的相关操作 创建 调用 查看 删除 语法 变量的定义与赋值 if条件判断 参数 case结构 while循环 repeat循环结构 loop语句 leave语句 游标 ...
- oracle 查看函数被哪些触发器引用_oracle如何查看存储过程,存储函数,触发器的具体内容...
(1)set serveroutput on 实现plsql developer 打印输出 (2)如何查看存储过程,存储函数,触发器的内容 查 user_sources表 eg:查询GET_DEPT_ ...
- oracle存储过程与函数的区别及作用,Oracle存储过程与存储函数-入门
文章思维导图 一. 存储过程和存储函数的定义 定义:存储在数据库中,供所有用户程序调用的子程序叫做存储过程/存储函数.复杂点的解释:存储过程(Stored Procedure),就是一组用于完成特定数 ...
- java 执行oracle 存储过程_oracle--在java中调用存储过程和存储函数
在java中调用存储过程和存储函数 存储过程: 查询某个员工的姓名 月薪 职位: create or replace procedure queryempinfo(eno in number, pen ...
最新文章
- 数字信号处理中卷积的图形化动态解释
- 选择排序的基本原理及实现
- 【NLP】 理解NLP中网红特征抽取器Tranformer
- OAuth 2.0初学者指南
- 虚拟化精华问答 | 虚拟化的关键技术有哪些?
- Kafka : kafka无法消费的情况
- php 简繁体转换类库,简体中文转换为繁体中文的PHP函数
- Android手机检测存储卡软件,SD Insight-洞察SD卡(检测SD卡真假)app下载1.5.7安卓最新版-西西软件下载...
- 基于JSP网上购书系统
- 海思demo删减_从零开始在海思Hi3559a运行demo
- 315前瞻:哪些互联网消费领域今年可能上榜?
- ElasticSearch--Field的使用
- 微信小程序实现可移动悬浮按钮(超简单)
- Summer School实验
- Hadoop 学习笔记(三)常用命令
- THANK YOU FOR YOUR CONCERN, SIOBAN AND ANTHONY
- word字号选项设置为中文字号
- h.265不是视频压缩技术未来的5个原因
- 环信即时通讯云iOS版V2.0.9.1服务评测
- 三、软考·系统架构师——计算机网络基础
热门文章
- 《数据统计分析及R语言编程(第二版)》练习题总结(一)
- ios pan手势滑动消失动画_iOS 当你的左滑手势失效时的解决方案
- Axon Framework简介
- DataGrip 太好使了
- c语言基础代码(基础代码编程)
- 【DFS题型九/双向DFS】王子救公主
- c语言中:=和==的区别是什么?
- 从 sketch 中获取颜色、字体组件内容
- [001]code blocks - error: expected identifier or ‘(‘ before ‘int‘|
- 码出一个高颜值原生折线图(新增柱状图、环形图)