本篇文章旨在帮助大家熟练掌握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)

5.SQL数据库存储过程操作相关推荐

  1. Eclipse连接到My sql数据库之前操作

    Eclipse连接到My sql数据库之前操作 1:首先是安装My sql数据库(为了减少你的麻烦,按照下面的连接,下载即可)百度云链接:http://pan.baidu.com/s/1mitWmbm ...

  2. mybatisplus 操作另一个数据库的数据_c#连接sql数据库以及操作数据库

    1.概述 http://ado.net提供了丰富的数据库操作,这些操作可以分为三个步骤: 第一,使用SqlConnection对象连接数据库: 第二,建立SqlCommand对象,负责SQL语句的执行 ...

  3. C# 连接SQL数据库以及操作数据库

    1.概述 ado.net提供了丰富的数据库操作,这些操作可以分为三个步骤: 第一,使用SqlConnection对象连接数据库: 第二,建立SqlCommand对象,负责SQL语句的执行和存储过程的调 ...

  4. SQL数据库基础操作

    1.数据库操作: 防止中文乱码: set names gbk; 1.1 库: 创建数据库设置默认字符集default character set utf8 查看所有库: show databases; ...

  5. SQL 数据库 存储过程 视图

    一.存储过程 1.概述 存储过程是一组编译在单个执行计划中的T-SQL语句 存储过程:就像函数一样的会保存在数据库中(可编程性) 存储过程的优点: 1.允许模块化程序设计 2.允许更快执行如果某操作需 ...

  6. python调用sql数据库_Python3操作SQL Server数据库(实例讲解)

    1.前言 前面学完了SQL Server的基本语法,接下来学习如何在程序中使用sql,毕竟不能在程序中使用的话,实用性就不那么大了. 2.最基本的SQL查询语句 python是使用pymssql这个模 ...

  7. SQL数据库层面操作(DDL)

    DDL(Data Definition Language 数据定义语言)用于对数据库和数据表的操作,因为操作对象有两个(数据库和数据表),所以我们要在每个命令之后(create.drop.alter. ...

  8. Windform对sql数据库进行操作

    链接数据库 static string connstr = "Data Source=.;Initial Catalog=数据库名;Integrated Security=True" ...

  9. SQL数据库脚本操作(WINCC VBS脚本)

    1.首先看下数据库的连接:连接字符串 '连接字符串' 1."Provider=SQLOLEDB.1;Persist Security Info=False;User ID=;PassWord ...

最新文章

  1. Python每日一练0023
  2. 计算机语言学教程,《语言学教程》-中文笔记(完整).doc
  3. 机器人学习--全局定位(阿尔伯塔大学张宏教授报告)
  4. 开源开放 | 中文相对复杂词汇识别数据集RCWI-Dataset(CCKS2021)
  5. 用uGUI开发自定义Toggle Slider控件
  6. java关键字:volatile
  7. preprocessor预处理器
  8. Guitar Pro8(简称GTP8)正式版吉他谱神器
  9. 华硕重装系统键盘灯失效 =重装ATK驱动
  10. 宝塔面板安装和使用教程(详细)
  11. C++代码实现图片调色
  12. 烽火2640路由器命令行手册-04-网络协议配置命令
  13. GT9xx触摸屏驱动总结
  14. CSS文本超过两行用省略号代替(兼容所有浏览器)
  15. win10系统安装打印机失败如何解决?
  16. 焱融看|混合云环境下,如何实现数据湖最优存储解决方案
  17. 量子运算-比算子描述更广泛的一类刻画量子态在客观世界演化的数学工具
  18. Python面试题笔试题Django部分总结
  19. 牛客网wannafly挑战赛13-D(贪心)
  20. OFC2020论文阅读 Th2A.48 Concept and Experimental Demonstration of Optical IM/DD End-to-End System Optimi

热门文章

  1. Floyd算法求解最短距离
  2. 【Python网络开发-黏包问题(三)黏包问题的解决办法】
  3. java现实图片头像抓取
  4. 原生JavaScript小白入门001之HTML为<script>标签定义的6种属性
  5. Linux查看opencv 版本
  6. linux系统下“rwx“的概念及用法~
  7. 【开源我写的富文本】打造全网最劲富文本系列之大话技术难点与特色设计。...
  8. 支持html的免费建站,20个非常不错的HTML5免费建站模板
  9. 赵丽颖明星人物介绍html源码 html期末大作业 课程设计
  10. 36进制与10进制之间的转换