SQL存储过程、视图
存储过程:
存储过程(stored procedure)有时也称为sproc。存储过程存储于数据库中而不是在单独的文件中,有输入参数、输出参数以及返回值等。
在数据库中,创建存储过程和创建其他对象的过程一样,除了它使用的AS关键字外。存储过程的基本语法如下:
CREATE PROCDUER|PROC <sproc name>
[<parameter name>[schema.]<data type>[VARYING][=<default value>][OUT [PUT]][,
[<parameter name>[schema.]<data type>[VARYING][=<default value>][OUT [PUT]][,
...]]
[WITH
RECOMPILE|ENCRYPTION|[EXECUTE AS {CALLER|SELF|OWNER|<'user name'>}]
[FOR REPLICATION]
AS
<code>|EXTERNAL NAME <assembly name>.<assembly class>
存储过程示例一:
执行存储过程方法一:
执行存储过程方法二:
上面说过,存储过程可以定义返回值。
示例:
修改存储过程示例:
利用存储过程查找三个表内的信息示例:
示例:
示例二:
练习:
要求;写一个存储过程,买东西,自动添加小票进入。
1.我又没有这个商品???
2.你买的数量在我店里能不能够???
create database lianxi120
go
use lianxi120
go
CREATE table mendian
(
scode int primary key identity(101,1),
sname varchar(18),
sshu int,
sprice decimal(18,2),
sgong int,
)
CREATE table gongying
(
gcode int primary key identity(1,1),
gname varchar(18),
glian varchar(18),
gtel decimal(18,0)
)
CREATE table xiaopiao
(
pcode int primary key identity(11,1),
pname varchar(18),
pprice decimal(18,2),
pshu int,
pzong decimal(18,2),
ptime datetime,
)
insert into mendian values('石油',20,70,1)
insert into mendian values('毒品',100,2000,2)
insert into mendian values('M4-S',70,16000,2)
insert into mendian values('天空套',1000,5,3)
insert into mendian values('iPhone7',7000,5,4)
insert into mendian values('兰博基尼',5,4500000,5)
insert into mendian values('绿茶婊',200,3000,5) insert into gongying values('沙特王国','土喀拉耶鲁斯基',98876767675)
insert into gongying values('金三角','迪迦',09783356782)
insert into gongying values('DNF','马化腾',06783357524)
insert into gongying values('全球iPhone直营店','乔布斯',18666666666)
insert into gongying values('三里屯','Licuy',18678199999) select*from mendian
select*from gongying create proc chaoshi
as
begin
select*from mendian
select*from gongying
select*from xiaopiao
end
go
exec chaoshi create proc guanli
@shangpin int, @shuliang int
as
begin
declare @sp int
--count():统计你查询出来的记录数
select @sp=COUNT(*) from mendian where scode =@shangpin
if @sp =1
begin
declare @sl int
select @sl = sshu from mendian where scode =@shangpin
if @sl>@shuliang
begin
declare @sn varchar(18)
select @sn = sname from mendian where scode =@shangpin
declare @spr decimal(18,2)
select @spr = sprice from mendian where scode =@shangpin
declare @zong decimal(18,2)
set @zong =@spr * @shuliang
declare @time datetime
set @time=getdate()
insert INTO xiaopiao VALUES(@sn,@spr,@sl,@zong,@time)
update mendian SET sshu=@sl-@shuliang where scode=@shangpin
end
begin
declare @gy varchar(18)
select @gy=gname from gongying where gcode=(SELECT sgong from mendian where scode=@shangpin)
declare @gname varchar(18)
select @gname=glian from gongying where gcode=(SELECT sgong from mendian where scode=@shangpin)
declare @gtel decimal(18,0)
select @gtel=gtel from gongying where gcode=(SELECT sgong from mendian where scode=@shangpin)
print '商品数量不足,请联系供应商'+@gy+',联系人:'+@gname+',联系电话:'+cast(@gtel as varchar(18))
end
end
else
begin
print'查无此商品'
end
end
GO update mendian set sshu=100 where scode=103
select * from mendian
select * from xiaopiao
exec guanli 103,10
SQL存储过程、视图的更多相关文章
- 使用SQL存储过程有什么好处 用视图有什么好处
随便胡乱说几点,大家补充一下.1.预编译,已优化,效率较高.避免了SQL语句在网络中传输然后再解释的低效率.2.如果公司有专门的DBA,写存储过程可以他来做,程序员只要按他提供的接口调用就好了.这样分 ...
- 刷新SQL Server所有视图、函数、存储过程 更多 sql 此脚本用于在删除或添加字段时刷新相关视图,并检查视图、函数、存储过程有效性。 [SQL]代码 --视图、存储过程、函数名称 DECLARE @NAME NVARCHAR(255); --局部游标 DECLARE @CUR CURSOR --自动修改未上状态为旷课 SET @CUR=CURSOR SCROLL DYNAMIC FO
刷新SQL Server所有视图.函数.存储过程 更多 sql 此脚本用于在删除或添加字段时刷新相关视图,并检查视图.函数.存储过程有效性. [SQL]代码 --视图.存储过程.函数名称 DE ...
- SQL存储过程分页(通用的拼接SQL语句思路实现)
多表通用的SQL存储过程分页 案例一: USE [Community] GO /****** Object: StoredProcedure [dbo].[Common_PageList] Scrip ...
- SQL存储过程概念剖析
一.SQL存储过程的概念,优点及语法 定义:将常用的或很复杂的工作,预先用SQL语句写好并用一个指定的名称存储起来, 那么以后要叫数据库提供与已定义好的存储过程的功能相同的服务时,只需调用execut ...
- sql 理解视图
可以看作是定义在sqlserver上的虚拟的表,本身并不存储数据,仅仅存储一个select语句和涉及的表的引用 通过视图,客户端不再需要知道底层表结构和其之间的关系,视图提供了一个统一访问数据的接口 ...
- 11、SQL Server 视图、数据库快照
SQL Server 视图 什么是视图? 视图是一个虚拟的表,内容源于查询的结果集.只有当视图上建立了索引后,才会具体化. 视图可以筛选和处理数据,而不是直接访问基础表.如:创建一个视图,只展示源表中 ...
- 关于MVC工厂模式的增删改查sql存储过程
这里MVC中用到了反射,工厂,泛型,接口 在搭建框架的时候,除了MVC的三层以外,还有泛型的接口层和工厂层 下面是dal层调用sql存储过程,增删改查,dal层继承了接口层,实现了接口层里面的方法 1 ...
- CodeSmith生成SQL Server视图的实体类脚本/对应的生成模板
C#生成sql视图的实体类 using System;using System.Text;using CodeSmith.Engine;using SchemaExplorer;using Syste ...
- SQL SERVER视图对查询效率的提高
SQL SERVER视图不仅可以实现许多我们需要的功能,而且对于SQL SERVER查询效率的提高也有帮助,下面一起来了解一下. 有两张数据表:A和B,其中A的记录为2万条左右,而B中的数据为200万 ...
- PL/SQL存储过程编程
PL/SQL存储过程编程 /**author huangchaobiao *Email:huangchaobiao111@163.com */ PL/SQL存储过程编程(上) 1. Oracle应用编 ...
随机推荐
- 世界城市 XML
下载地址:http://www.qlcoder.com/uploads/dd01140921/147988679320159.xml <Location> <CountryRegio ...
- Sublime Text3快捷键实用总结
今天想给大家分享一个我自己最喜欢用的一个编辑器——Sublime Text3的常用快捷键 相信大家每天和代码打交道,接触时间最长的莫过于编辑器了吧,而我就特别喜欢用Sublime Text3这个编辑器 ...
- Gradle用户指南(中文版)
http://rinvay.github.io/android/2015/03/26/Gradle-Plugin-User-Guide(Translation)/
- react native与现有的应用程序集成
(1)通过cocopods 集成 ,以下内容 参考 http://wiki.jikexueyuan.com/project/react-native/integration-existing.html ...
- XMPP学习——1、介绍
XMPP(Extensible Messaging and Presence Protocol,前称Jabber[1])是一种以XML为基础的开放式实时通信协议,是经由互联网工程工作小组(IETF)通 ...
- System.currentTimeMillis()与SystemClock.uptimeMillis()
1.System.currentTimeMillis()获取的是系统的时间,可以使用SystemClock.setCurrentTimeMillis(long millis)进行设置.如果使用Syst ...
- sdk的目录结构及其功能
sdk的目录结构及其功能 add-ons: 这里面保存着附加库,比如GoogleMaps,当然你如果安装OphoneSDK,这里也会有一些类库在里面. build-tools: 各个版本的sdk编译工 ...
- Swift开发第十篇——可变参数函数&初始化方法顺序
本篇分为两部分: 一.Swift中的可变参数函数 二.初始化方法的顺序 一.Swift中的可变参数函数 可变参数函数指的是可以接受任意多个参数的函数,在 OC 中,拼接字符串的函数就属于可变参数函数 ...
- [.net程序员必看]微软新动向之Android和IOS应用 visual studio 2015 Cordova[原创]
自萨蒂亚·纳德拉(Satya Nadella)上任微软CEO以来,可谓是惊喜不断,仿佛让世界尤其是我们.net程序员心中又燃起了希望.先是免费提供 iOS 版和安卓版 Office:然后在 xbox ...
- EF Power Tools的Reverse Engineer Code First逆向生成Model时处理计算字段
VS2013上使用EF Power Tools的Reverse Engineer Code First逆向生成Model时,没有处理计算字段.在保存实体时会出现错误. 可以通过修改Mapping.tt ...