5.SQL数据库存储过程操作

news/2024/12/28 15:16:17/

本篇文章旨在帮助大家熟练掌握SQL数据库存储过程操作,加深大家对SQL数据库存储过程的理解.

文章目录

  • 参考表格属性
  • 仓库管理类的操作
  • 产品销售类的操作
  • 进阶!自动生成编号
    • 方法1
    • 方法2

参考表格属性

见第一篇文章
2.SQL查询语句的操作和练习

仓库管理类的操作

1)插入一个新的供应商元组

CREATE PROC 插入供应商
@GYSNO char(8),
@GYSNAME Varchar(40),
@GYSdz Varchar(40) 
AS
INSERT 供应商 VALUES (@GYSNO,@GYSNAME,@GYSdz)

运行

EXEC 插入供应商 S10,土拨鼠工厂,青岛

2)给指定城市的所有仓库增加X m²的面积

CREATE PROC 面积加
@MJ int,
@DZ Varchar(40)
AS
UPDATE 仓库
SET 面积=面积+@MJ
WHERE 城市=@DZ

运行

EXEC 面积加 55,上海

3)检索某职工发给某供应商的订购单信息\

CREATE PROC 检索
@ZGNO char(8),
@GYSNO char(8)
AS
SELECT *
FROM 订购单
WHERE 职工号=@ZGNO AND 供应商号=@GYSNO

运行

EXEC 检索 E3,S3

4)检索在某城市工作并向某供应商发了订购单的职工号

CREATE PROC 检索职工
@DZ Varchar(40),
@GYSNO char(8)
AS
SELECT 职工号
FROM 仓库 JOIN 职工
ON 仓库.仓库号=职工.仓库号
WHERE 城市=@DZ AND 
职工号 IN 
(SELECT 职工号 FROM 订购单 WHERE 供应商号=@GYSNO)

运行

EXEC 检索职工 上海,S4

产品销售类的操作

a)查询单价范围在X元到Y元范围内的产品信息

CREATE PROC 查询单价
@min money,
@max money
AS
SELECT *
FROM 产品
WHERE 单价>=@min AND 单价<=@max

运行

EXEC 查询单价 5,15

b)查询在某日期之后签订的订购单的客户信息(客户的名称、联系人和电话号码)、订单号和订购日期

CREATE PROC 日期之后
@time datetime
AS
SELECT 订单号,订购日期,客户.客户名称,客户.联系人,客户.电话号码
FROM 订购单 JOIN 客户
ON 订购单.客户号=客户.客户号
WHERE 订购日期 >@time

运行

EXEC 日期之后 '2008-04-05'

c)更新操作,将某产品的订购日期统一修改为一个指定日期


CREATE PROC 修改日期
@name varchar(40),
@time datetime
AS
UPDATE 订购单
SET 订购日期=@time
WHERE 订单号 IN
(SELECT 订单号 FROM 订购单明细 WHERE 产品号 IN
(SELECT 产品号 FROM 产品 WHERE 产品名称=@name))

运行

EXEC 修改日期 面包,'2998-04-05'

进阶!自动生成编号

在简单练习了SQL的存储过程的操作以后,我们来练习一些高阶程序,做一些更强的功能.

首先,定义一个自动编号数据库

CREATE DATABASE 自动编号

建立一个BOOK表

USE 自动编号
CREATE TABLE BOOK
(BNO char(5)PRIMARY KEY CHECK(BNO LIKE '[0-9][0-9][0-9][0-9][0-9]'),
BNAME Varchar(40))

再创建一个出库单的表

CREATE TABLE 出库单
(出库单号 char(9)PRIMARY KEY CHECK(出库单号 LIKE '[E][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'),
产品编号 char(4),
数量 int,
单价 money)

提示,两个表中的数据,随意加入几条即可.

我们令出库单号的规则为:诸如"E06110001" ,其中E是固定字符,0611是系统日期(年月),0001是该月的订单批次(依次累加)

那么我们根据需求编写自动生成出库单号的存储过程

方法1

CREATE PROC AUTO_入库
@ROW_ID CHAR(9) OUTPUT
AS
DECLARE @OLDNUM INT,@NEWNUM INT
SELECT @OLDNUM=COUNT(*) FROM 出库单
IF @OLDNUM=0  SET @NEWNUM=1
ELSEBEGINSELECT @OLDNUM=MAX(STR(SUBSTRING(出库单号,6,9))) FROM 出库单SELECT @NEWNUM=@OLDNUM+1END
SET @ROW_ID='E'+REPLACE(STR(MONTH(GETDATE()),2),' ','0')+REPLACE(STR(DAY(GETDATE()),2),' ','0')+REPLACE(STR(@NEWNUM,4),' ','0')
DECLARE @ROW_ID CHAR(9)EXEC AUTO_入库 @ROW_ID OUTPUT
INSERT 出库单  VALUES(@ROW_ID ,'0001',300,5)

方法2

CREATE PROC 自动入库
@NN char(4),
@N int,
@M money
AS
DECLARE @OLDNUM INT,@NEWNUM INT
SELECT @OLDNUM=COUNT(*) FROM 出库单
IF @OLDNUM=0  SET @NEWNUM=1
ELSEBEGINSELECT @OLDNUM=MAX(STR(SUBSTRING(出库单号,6,9))) FROM 出库单SELECT @NEWNUM=@OLDNUM+1END
INSERT 出库单
VALUES('E'+REPLACE(STR(MONTH(GETDATE()),2),' ','0')+REPLACE(STR(DAY(GETDATE()),2),' ','0')+REPLACE(STR(@NEWNUM,4),' ','0'),@NN,@N,@M)

http://www.ppmy.cn/news/207152.html

相关文章

吴恩达机器学习课程笔记

吴恩达机器学习 几乎每一个和我讨论过的人都同意&#xff0c;人生的最糟糕时期是在11岁到14岁。——《黑客与画家》 学习资料 课程 b站[中英字幕]吴恩达机器学习系列课程 Coursera机器学习 Coursera深度学习 主成分数据选择那里有一节课没有字幕&#xff0c;建议移步Course…

IxAttack1.29版本应用在XM2机框上的16口LSM卡的问题。

简单介绍一个IxAttack1.29&#xff0c;它是IXIA的一个免费的攻击测试软件。程序都是用TCL编写的。而且是图形界面。界面比较有好。 大家可以去IXIA网站下载。 IxAttack1.29 主要应用在STX板卡上的。近来因工作的要求&#xff0c;需要在XM2机框上的16口LSM板卡上运行这个软件。 …

胡策day 10.26 T2 人、镜子与墙

*PS&#xff1a;不得不说这个题好恶心啊&#xff0c;注意的细节超多&#xff01;&#xff01;&#xff01;〒▽〒话说这套题是MC和老窦要的吗&#xff1f;&#xff1f;&#xff1f; 题目来源&#xff1a; 钟长者 【问题描述】 你是能看到第二题的 friends 呢。——laekovHja 和…

python安装包出错ERROR:Exception:Traceback (most recent call last): File“d:\python3.8.10\download\lib\sit

quit 科学上网工具&#xff0c;梯子&#xff01;&#xff01;重新尝试安装&#xff1a; 安装成功&#xff01;

人脸常用数据集下载地址

人脸检测 face detection Caltech 10000 : http://www.vision.caltech.edu/Image_Datasets/Caltech_10K_WebFaces/ FDDB : http://vis-www.cs.umass.edu/fddb/index.html WIDER Face : http://mmlab.ie.cuhk.edu.hk/projects/WIDERFace/ MALF : http://www.cbsr.ia.ac.cn/f…

深度学习自学(二十六):人脸数据集

人脸检测&#xff0c;关键点检测&#xff0c;人脸识别&#xff0c;人脸表情&#xff0c;人脸年龄&#xff0c;人脸姿态等方向的数据集。 01 人脸检测 所谓人脸检测任务&#xff0c;就是要定位出图像中人脸的大概位置。 1.1 Caltech 10000 数据集地址&#xff1a;http://www.…

YOLOv5改进系列(7)——添加SimAM注意力机制

【YOLOv5改进系列】前期回顾: YOLOv5改进系列(0)——重要性能指标与训练结果评价及分析 YOLOv5改进系列(1)——添加SE注意力机制

常用图像处理相关图像数据库

常用图像数据集&#xff1a;标注、检索&#xff0c;原文地址&#xff1a;https://blog.csdn.net/lansatiankongxxc/article/details/12978207 计算机视觉的一些测试数据集和源码站点网址&#xff1a;https://blog.csdn.net/hero_heart/article/details/51088649&#xff0c;这个…