use electric
go --变量
--局部变量的声明格式
--declare @局部变量名 数据类型
--局部变量赋值
declare @littlepage int
set @littlepage=18
print cast(@littlepage as varchar(255)) declare @little varchar(255)
select @little=warehouse from Stock
print @little --
--存储过程
-- --if else 语法
--在电力抢修工程数据库中,如果stock表中存在库存量低于1的物资,就显示文本:the amount is not enough;否则显示所有物资信息。
if exists (select * from stock where amount < 1)
print 'the amount is not enough'
else
begin
select * from stock
end --while语法
--将stock表中所有物资单价增加10%,直到有一个物资单价超过15000或单价总和超过50000为止。
while (select sum(unit) from stock) <50000
begin
update stock set unit=unit*1.1
if exists(select * from stock where unit>15000)
break
else
continue
end --wait delay/time 语法
WAITFOR DELAY '00:00:05'
SELECT * FROM stock
WAITFOR TIME '11:15:20'
SELECT * FROM salvaging --case语法
/*用CASE语句格式一实现:在对stock表的查询中,当仓库号的值是“供电局1号仓库”、“供电局2号仓库”
、“供电局3号仓库”时分别返回“北京”、“上海”、“广州”,否则返回“未知”。*/
select mat_no,mat_name,speci,amount,unit,total,
warehouse=
case warehouse
when '供电局1#仓库' then '北京'
when '供电局2#仓库' then '上海'
when '供电局3#仓库' then '广州'
else '未知'
end
from stock --创建一个简单的存储过程,用于返回stock表中的所有记录。
CREATE PROCEDURE exp1
AS
SELECT * FROM stock exec exp1 --创建一个存储过程,通过输入的仓库名称显示出该仓库的所有库存物资信息。
create procedure exp2
@ckmc varchar(255)
as
select * from stock where warehouse=@ckmc exec exp2 '供电局1#仓库' --创建一个带输入参数的存储过程,向stock表中添加一个新的数据行。
create procedure exp3
@mat_no varchar(255),@mat_name varchar(255),@speci varchar(255),@warehouse varchar(255),@amount int,@unit decimal(8,2),@total decimal(8,2)
as
insert stock values(@mat_no,@mat_name,@speci,@warehouse,@amount,@unit,@total) exec exp3 'm014','护套绝缘','BVV-130','供电局5#仓库',500,100.5,100020.00 -- 为了确保Create命令能成功执行,可以在Create Procedure之前执行如下语句:
IF EXISTS (SELECT name FROM sysobjects WHERE name='exp3' and type='P')
DROP PROCEDURE exp3
GO --创建一个带默认参数的存储过程,通过传递的参数显示物资的名称、规格、项目名称、
--是否按期完工等信息,如果没有提供参数,则使用预设的默认值。
CREATE PROCEDURE exp4
@mname varchar(50)='%绝缘%', @pno int=20100001
AS
SELECT mat_name,speci,prj_name,prj_status
FROM stock, salvaging, out_stock
WHERE stock.mat_no=out_stock.mat_no
and salvaging.prj_no=out_stock.prj_no
and mat_name like @mname
and salvaging.prj_no=@pno exec exp4 --创建一个存储过程,求某个抢修工程领取物资的总数量。 create procedure exp5
@pn varchar(255),@sum int output
as
select @sum=sum(amount) from Out_Stock WHERE prj_no=@pn DECLARE @total int
EXECUTE exp5 '', @total OUTPUT
PRINT '该项目领取物资总量为:'+ CAST(@total AS varchar(20)) --23页ppt
--创建一个存储过程,根据输入的工程部门及起始时间段,统计
--汇总该部门在对应时间段内所参与抢修的工程项目总数以及领
--取物资的总成本,并要求输出 CREATE PROCEDURE exp6
@department varchar(50),@start_date datetime,@end_date datetime, @count_prj int OUTPUT, @sum_cost decimal(18,2) OUTPUT
As
SELECT @count_prj=COUNT(salvaging.prj_no),
@sum_cost=SUM(Out_stock.amount*Stock.unit)
FROM salvaging,out_stock,stock
WHERE out_stock.prj_no =salvaging.prj_no
and out_stock.mat_no =Stock.mat_no
and department =@department
and get_date between @start_date and @end_date DECLARE @prjcounts int,@sumcosts decimal(18,2)
EXEC exp6 '工程2部','2011-1-1','2011-1-31',@prjcounts OUTPUT,@sumcosts OUTPUT
PRINT '该部门参与抢修工程项目'+ CAST(@prjcounts AS varchar(20))+'个,总成本为'+CAST(@sumcosts AS varchar(20))

SQL Server 第四章 存储过程(Procedure),触发器(Trigger),数据完整性(Data Integrity)的更多相关文章

  1. MS SQL Server之光标、存储过程和触发器

    光标 通常数据库操作被认为是以数据集为基础的操作,但是光标被用于以记录为单位来进行操作,来获取数据库中的数据的子集.光标一般用于过程化程序里的嵌入的SQL语句. 对光标的定义如下: DECLARE C ...

  2. SQL Server查询数据库所有存储过程、触发器、索引信息SQL分享

    1. 查询所有存储过程 1 select Pr_Name as [存储过程], [参数]=stuff((select ','+[Parameter] 2 from ( 3 select Pr.Name ...

  3. sql server 常用的系统存储过程

      系统存储过程 说明 sp_databases 列出服务上的所有数据库 sp_helpdb 报告有关指定数据库或所有数据库的信息 sp_renamedb 更改数据库的名称 sp_tables 返回当 ...

  4. Sql Server 带参数的存储过程执行方法

    Sql Server 带参数的存储过程执行方法 Visual C# 动态操作 SQL Server 数据库实例教程(4):带参数的存储过程执行方法 上一篇文章介绍了带参数的SQL语句执行方法和不带参数 ...

  5. [转] sql server 跨数据库调用存储过程

    A库存储过程: create PROCEDURE [dbo].[spAAAForTest] ( ) =null , ) =null ) AS BEGIN select N'A' AS a , N'B' ...

  6. SQL Server 限制IP登陆(登陆触发器运用)

    原文:SQL Server 限制IP登陆(登陆触发器运用) 一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 实现代码(SQL Codes) 补 ...

  7. SQL Server技术问题之存储过程与sql语句的优缺点

    优点: 1. 允许模块化程序设计.2.可维护性高,只需创建存储过程一次并将其存储在数据库中,以后即可在程序中调用该过程任意次.存储过程可独立于程序源代码而单独修改,而不需要更改.测试以及重新部署程序集 ...

  8. SQL SERVER 2008破解加密存储过程(修正存储过程过长解密出来是空白的问题)

    SQLServer2005里使用with encryption选项创建的存储过程仍然和sqlserver2000里一样,都是使用XOR进行了的加密.和2000不一样的是,在2005的系统表syscom ...

  9. SQL Server 数据库的维护(二)__触发器

    --维护数据库-- --触发器-- --概述: 触发器是一种特殊类型的存储过程,用来强制执行业务规则.在调用执上,触发器不能像存储过程那样可以由用户通过T-SQL语句直接调用,而是需要有数据库所发生的 ...

随机推荐

  1. MongoDB系列----备份与导入导出

    参考: http://my.oschina.net/xiaomaoandhong/blog/63471,<> 1.停掉服务器 然后备份 Mongodb将所有数据都存放在"数据目录 ...

  2. JDK1.8 HashMap--treeifyBin()方法

    /*树形化*/ final void treeifyBin(Node<K,V>[] tab, int hash) { int n, index; Node<K,V> e;// ...

  3. linux下chromedriver的安装

    很多时候,发现phantomjs被一些网站屏蔽导致我们无法达到想要的结果,一方面phantomjs也停止维护,这时候们可以使用chromedriver(谷歌)或者firefoxdriver(火狐)来代 ...

  4. windows 下安装weblogic

    下载weblogic安装文件 https://www.oracle.com/technetwork/middleware/weblogic/downloads/index.html 在目录下, 下载后 ...

  5. Python:re中的group方法简介

    原文地址:http://www.cnblogs.com/kaituorensheng/archive/2012/08/20/2648209.html. 正则表达式中,group()用来提出分组截获的字 ...

  6. 梳理vue双向绑定的实现原理

    Vue 采用数据劫持结合发布者-订阅者模式的方式来实现数据的响应式,通过Object.defineProperty来劫持数据的setter,getter,在数据变动时发布消息给订阅者,订阅者收到消息后 ...

  7. PHP提交失败保留填写后的信息

    index.html: <html> <head> <title>jQuery Ajax 实例演示</title> </head> < ...

  8. Windows下的Python安装与环境变量的配置

    Windows下的Python安装与环境变量的配置 第一步:python下载: Python安装包下载地址:http://www.python.org/ 第二步:python安装: 双击下载包,进入P ...

  9. vue-cli —— 局部修改Element样式

    最近在做vue项目时用到了Element,发现这玩意儿用起来很舒服,很新颖,上手也很快,而且效果足够酷炫.但是后面发现一个很大的问题,那就是Element的样式有限,这极大地限制了项目的应用广度,所以 ...

  10. java项目word文件转html文件

    最近在项目开发中用户提出要在电脑上没有装office时在浏览器中打开word文件,最后确定的逻辑:用户选择想要查看的文件,页面js判断文件是否为word.不是执行下载,是后端根据word文件后缀访问对 ...