sql:MySql create FUNCTION,VIEW,PROCEDURE

2023-11-14

use geovindu;

#函数

DELIMITER $$
drop function if exists f_GetDepartmentName $$
CREATE function f_GetDepartmentName
(
   did int
) 
returns nvarchar(400) 
begin
declare str nvarchar(100);
select DepartmentName into str from DepartmentList where DepartmentID=did;
return IFNULL(str,'');
end; 
$$
DELIMITER ;


DELIMITER $$
DROP FUNCTION IF EXISTS `geovindu`.`f_GetAuthorName` $$
CREATE FUNCTION `geovindu`.`f_GetAuthorName` (did int) RETURNS varchar(400)
BEGIN
   declare str varchar(100);
return(select ifnull(AuthorName,'') from AuthorList where AuthorID=did);
END $$
DELIMITER ;



#测试
SELECT  f_GetDepartmentName(1);
SELECT  f_GetAuthorName(1);

#视图

/*视图*/
select * from geovindu.views;

desc View_BookInfoList;

show create view View_BookInfoList;


select * from View_BookInfoList;

DELIMITER $$
drop view IF EXISTS View_BookInfoList  $$
CREATE VIEW `geovindu`.`View_BookInfoList` AS
  select BookInfoID , BookInfoKind , BookInfoPlace ,BookInfoSeries , BookInfoAuthor , BookInfoPress , BookInfoLanguage , BookInfoStatus , BookInfoOperatorId ,  BookInfoISBN , BookInfoBarCode , BookInfoName ,    BookInfoRemarks ,BookInfoAddDate,BookInfoPublish ,BookInfoPrice,
BookKindList.BookKindName,BookPlaceList.BookPlaceName,f_GetAuthorName(BookInfoAuthor)
from BookInfoList,BookKindList,BookPlaceList
where BookInfoList.BookInfoKind=BookKindList.BookKindID  and BookInfoList.BookInfoPlace=BookPlaceList.BookPlaceID;
$$
DELIMITER ;

#删除
DELIMITER $$
DROP PROCEDURE IF EXISTS `geovindu`.`DeleteBookKind` $$
CREATE PROCEDURE `geovindu`.`DeleteBookKind` (IN param1 INT)
BEGIN
         Delete From bookkindlist WHERE BookKindID  = param1;
END $$
DELIMITER ;

#查询所有
DELIMITER $$
DROP PROCEDURE IF EXISTS `geovindu`.`proc_Select_BookKindListAll` $$
CREATE PROCEDURE `geovindu`.`proc_Select_BookKindListAll` ()
BEGIN
    SELECT * FROM bookkindlist;
END $$
DELIMITER ;


select * from  `geovindu`.`bookkindlist`;
SELECT * FROM bookkindlist;

#统计
DELIMITER $$
DROP PROCEDURE IF EXISTS `geovindu`.`BookKindCount` $$
CREATE PROCEDURE `geovindu`.`BookKindCount` (OUT param1ID INT)
BEGIN
        select COUNT(*) into param1ID  From bookkindlist;
END $$
DELIMITER ;

#更新 
DELIMITER $$
DROP PROCEDURE IF EXISTS `geovindu`.`proc_Update_BookKindList` $$
CREATE PROCEDURE `geovindu`.`proc_Update_BookKindList` 
(
    IN param1ID Int,
    IN param1Name NVarChar(1000),
    IN param1Parent Int
)
BEGIN
IF NOT EXISTS (SELECT * FROM BookKindList WHERE BookKindName=param1Name) then #如果存在相同的记录,不更新名称
UPDATE BookKindList
	SET
		BookKindName=param1Name ,
		BookKindParent=param1Parent
	where
		BookKindID=param1ID;
ELSE
    UPDATE BookKindList
	SET BookKindParent=param1Parent
	where
		BookKindID=param1ID;
END IF;
END $$
DELIMITER ;


#查询一条
DELIMITER $$
DROP PROCEDURE IF EXISTS `geovindu`.`proc_Select_BookKindList` $$
CREATE PROCEDURE `geovindu`.`proc_Select_BookKindList` (IN param1 INT)
BEGIN
        SELECT * FROM BookKindList WHERE BookKindID = param1;
END $$
DELIMITER ;


call proc_Select_BookKindList (1);


#插入一条
DELIMITER $$
DROP PROCEDURE IF EXISTS `geovindu`.`proc_Insert_BookKindList` $$
CREATE PROCEDURE `geovindu`.`proc_Insert_BookKindList` 
(
    IN param1Name NVarChar(1000),
    IN param1Parent Int
)
BEGIN
        insert into BookKindList(BookKindName,BookKindParent) values(param1Name,param1Parent);
END $$
DELIMITER ;

#插入一条返回值
DELIMITER $$
DROP PROCEDURE IF EXISTS `geovindu`.`proc_Insert_BookKindOut` $$
CREATE PROCEDURE `geovindu`.`proc_Insert_BookKindOut` (IN param1Name NVarChar(1000),IN param1Parent Int,OUT ID INT)
BEGIN
     IF NOT EXISTS (SELECT * FROM BookKindList WHERE BookKindName=param1Name) then   #如果存在相同的记录,不添加
        INSERT INTO BookKindList (BookKindName,BookKindParent)VALUES(param1Name ,param1Parent);
        #set ID=Last_insert_id()
        SELECT LAST_INSERT_ID() into ID;
      end if;
END $$
DELIMITER ;


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

sql:MySql create FUNCTION,VIEW,PROCEDURE 的相关文章

随机推荐

  • 数据分析和可视化平台:Splunk Enterprise for mac v9.1.1激活版 兼容m1

    Splunk Enterprise 是一个数据分析和可视化平台 可帮助企业理解其数据 虽然没有适用于 Mac OS 的 Splunk Enterprise 官方版本 但他们确实为 Mac OS 提供了一个名为 Splunk Light 的应
  • 刷题之二分查找

    题目 给定一个 n 个元素有序的 升序 整型数组 nums 和一个目标值 target 写一个函数搜索 nums 中的 target 如果目标值存在返回下标 否则返回 1 来源 力扣 LeetCode 链接 https leetcode c
  • 2019超分辨综述

    论文地址 Deep Learning for Image Super resolution A Survey 摘要 图像超分辨率 SR 是一类重要的图像处理技术 旨在提高计算机视觉中图像和视频的分辨率 近年来 目睹了使用深度学习技术的图像超
  • 数据库中的blob是什么类型?

    BLOB binary large object 二进制大对象 是一个可以存储二进制文件的容器 在计算机中 BLOB常常是数据库中用来存储二进制文件的字段类型 BLOB是一个大文件 典型的BLOB是一张图片或一个声音文件 由于它们的尺寸 必
  • vulnstack-ATT&CK实战系列 红队实战(一)

    vulnstack ATT CK实战系列 红队实战 一 前言 在此次攻击过程中 需要用到cobalt strike内网渗透工具 而此软件的破解版在国内还是很难找到的 这里有一个扩展阅读 此次事件互联网上简称为contiLeaks 其中就有C
  • python学习练习题

    文章目录 前言 python简单题目学习 python简单题目学习 1 最小公倍数和最大公约数 2 水仙花数 100 1000 3 百钱百鸡问题 4 猜数字游戏 5 三局两胜猜拳游戏 6 CPAPS赌博游戏 总结 前言 光看知识点不练习终究
  • 全球及中国家政服务产业前景建议与运营盈利分析报告2022版

    全球及中国家政服务产业前景建议与运营盈利分析报告2022版 修订日期 2022年2月 出版单位 鸿晟信合研究院 对接人员 周文文 内容分析有删减 了解详情可查看咨询鸿晟信合研究院专员 目录 第一章 家政服务行业基本概述 第二章 国际家政服务
  • java基础--向上转型

    为什么要用向上转型 因为为了让方法复用 只写一个以父类为形参的方法即可 不然形参为子类的话 每个子类都要单独写一个方法 那该多麻烦啊 只不过向上转型会丢失子类的特有方法 向下转型是强转 可使用instance判断 用来调用子类的特有方法 c
  • 【算法】二叉树广度优先(BFS)

    二叉树广度优先遍历 Depth First Search 这个算法是逐层遍历的 是从上到下 从左到右依次遍历 知道全部节点都被遍历完为止 由于需要记录每一层的节点 所以需要记录其对应的父节点的子节点 同时具有顺序性 为此需要使用队列来装遍历
  • 【记录】Django重复三步

    Step1 修改models py Step2 执行命令python manage py makemigrations app name Step3 再执行命令python manage py migrate 1 激活虚拟环境 启动服务器
  • Nginx 安装成功后,无法访问到默认页面

    安装 Nginx 后 无法访问到 Nginx 页面 1 查看 Nginx 是否启动成功 ps ef grep nginx 2 查看默认80端口是否分配给 Nginx netstat ntlp 如果前面几步都是正常的 则可以判断出是防火墙将8
  • 【SpringCloud-学习笔记】Docker基本操作

    1 镜像相关命令 镜像名称一般分两部分组成 repository tag 在没有指定tag时 默认是latest 代表最新版本的镜像 2 镜像操作命令 3 案例 从DockerHub中拉取一个nginx镜像并查看 首先去镜像仓库搜索ngin
  • 关于rfind

    rfind全名reversefind 与find相反 size type rfind const basic string str size type index size type rfind const char str size ty
  • Java面向对象编程

    下列关于线性链表的叙述中 正确的是 A 各数据结点的存储空间可以不连续 但它们的存储顺序与逻辑顺序必须一致 B 各数据结点的存储顺序与逻辑顺序可以不一致 但它们的存储空间必须连续 C 进行插入与删除时 不需要移动表中的元素 D 以上说法均不
  • IDEA 回退GIT代码

    IDEA 回退GIT代码 我们代码平时在IDEA开发完成后 提交代码到远程仓库的流程为 我们在提交代码到远程仓库的时候难免会发生提交了错误代码 要回滚到上个版本的情景 根据上面的流程我整理了一下三个场景的解决方案 1 idea中git回退已
  • 个人隐私问题

    近日 某高校毕业生在校期间窃取学校内网数据 收集全校学生个人隐私信息的新闻引发了人们对互联网生活中个人信息安全问题的再度关注 在大数据时代 算法分发带来了隐私侵犯 在享受消费生活等便捷权利的同时 似乎又有不少个人信息泄露的担忧 用隐私换便利
  • mybatisplus分页总是查到全部数据?

    这是因为版本的问题 在3 4 1及以上需要配置过滤器以实现分页 分页代码 gt Test void contextLoads6 Page
  • x86平台运行arm64平台docker 镜像

    本文介绍在x86服务器上安装qemu aarch64 statick仿真器 以实现x86服务器可以运行docker或docker compose镜像 报错信息 x86服务器默认不能运行ARM平台镜像 会提示如下错误 WARNING The
  • CMD命令读取某个目录下所有文件夹名或文件名

    CMD命令读取某个目录下所有文件夹名或文件名 CMD命令读取某个目录下所有文件夹名或文件名 要用到的dir命令 开始操作 CMD命令读取某个目录下所有文件夹名或文件名 目的是给自己留个笔记 要用到的dir命令 dir ad 只查看文件夹 d
  • sql:MySql create FUNCTION,VIEW,PROCEDURE

    use geovindu 函数 DELIMITER drop function if exists f GetDepartmentName CREATE function f GetDepartmentName did int return