表
班级表
属性表
不带参数的存储过程
实例:
create procedure cunchu
AS
SELECT A.name,B.name ,Sex
FROM [dbo].[属性表] A JOIN [dbo].[班级表] B
on A.ID=B.ID
执行:
EXEC cunchu
結果:
带参数的存储过程
实例:
CREATE PROC cunchu
@name varchar(50)
as
select [ID],[Sex],[Occupation],Name
from [dbo].[属性表]
where name=@name
执行:
cunchu '贾宝玉'
結果:
表:
带输入参数的存储过程
USE [红凯]
GO
/****** Object: StoredProcedure [dbo].[procedure5] Script Date: 2019/7/3 21:47:24 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[procedure5]
@sum varchar
as
declare @name nvarchar(50)
select @name=[name] from [dbo].[MONSTER]
where wuli=@sum
print '武力为 '+ @sum +' 的怪物名字为 '+ @name
执行:
exec procedure5 @sum=1
结果:
刚开始定义的sum为int时会报错,改成varchar解决问题。
带输入和输出参数的存储过程
实例:
设有商品表(商品号,商品名,单价)和销售表(销售单据号,商品号,销售时间,销售数量,销售单价)。其中,商品号代表一类商品,商品号、单价、销售数量和销售单价均为整型。
请编写查询某年某商品的销售总毛利的存储过程,毛利=销售数量×(销售单价-单价)。要求商品号和年份为输入参数,总毛利用输出参数返回。
我的答案:
CREATE PROC MONEY
@num int,@year int ,@money int output/*前两个是输入参数/*
as
declare @a int ,@b int,@c int
select @a=销售数量 from 销售表 where 商品号=@num and 销售时间=@year
select @b=销售单价 from 销售表 where 商品号=@num and 销售时间=@year
select @c=单价 from 商品表 where 商品号=@num
set @money= @a*(@b-@c)
declare @d int
exec MONEY 1 ,2018, @d output