数据库

普通数据库

create database ZhouKaoA
use ZhouKaoA

create table UserInfo
(
UserId int primary key identity,
UserNum nvarchar(50),
UserPwd nvarchar(50)
)


create table Shopping
(
ShopId int primary key identity,
ShopName nvarchar(50),
ShopPrice decimal,
ShoNum int,
)


create table OrderInfo
(
Oid int primary key identity,
Oname nvarchar(50),
Otime datetime,
OZhuangtai int,
ShopWid int
)


create table delOrderInfo
(
DelId int primary key identity,
DelReson nvarchar(100),
DelPicture nvarchar(100),
OrderId int
)


select * from OrderInfo as o join Shopping as s on o.ShopWid = s.ShopId where Oname = 'GuoQi'
go
alter proc My_proc
(
@DelReson nvarchar(100),
@DelPicture nvarchar(100),
@OrderId int,
@Rults int output
)
as
begin
begin try
begin tran
insert into delOrderInfo values(@DelReson,@DelPicture,@OrderId)
update Shopping set ShoNum+=1 where ShopId = (select ShopId from Shopping as s join OrderInfo as o on s.ShopId = o.ShopWid where o.Oid = @OrderId)
commit tran
set @Rults = 1
end try
begin catch
rollback tran
end catch
end
declare @rest int
exec My_proc 'asdas','asdas',1,@rest
select @rest

 

 

 

 

存储过程数据库

 

 

--创建数据库
create database Month01
go
use Month01

--创建班级表
create table BanJi
(
BId int identity primary key,    --班级编号
BName varchar(20),                --班级名称
)
--添加数据
insert into BanJi values('1711A')
insert into BanJi values('1711B')

--创建学生信息表
create table XinXi
(
Id        int identity primary key,                --学生编号
Name    varchar(20),                            --学生姓名
XId        int foreign key references BanJi(BId),    --所在班级
RTime    datetime,                                --入学时间
Age        int,                                    --年龄
Sex        bit,                                    --性别 0.男 1.女
)

--添加数据
insert into XinXi values('马胜昆','1','2016/07/25','20','0')
insert into XinXi values('李西水','1','2017/07/25','20','0')
insert into XinXi values('郭帅','1','2015/09/13','20','0')
insert into XinXi values('小梅','1','2016/08/01','20','1')
insert into XinXi values('小美','1','2017/07/21','20','1')
insert into XinXi values('小兰','2','2018/03/12','21','1')
insert into XinXi values('笑笑','2','2018/03/12','21','1')
insert into XinXi values('李国才','2','2016/08/01','20','0')
insert into XinXi values('李耀科','2','2017/07/21','20','0')
insert into XinXi values('张信哲','2','2016/02/02','35','0')
--两表联查
select * from XinXi x join BanJi b on x.XId=b.BId

--删除
delete from XinXi where Id=10


--存储过程分页 查询

go
create proc P_Show
(
    --查询条件
    @Name nvarchar(100),
    @RTime nvarchar(100),
    --分页的条件
    @PageIndex int,
    @PageSize int,
    @PageCount int out --输出参数
)
as
Begin

    declare @sqlWhere nvarchar(max)='',@sqlPageed nvarchar(max)=''
    
    if @Name!=''
        set @sqlWhere+=' and Name like ''%'+@Name+'%'''
    
    if @RTime!=''
        set @sqlWhere+=' and RTime='''+@RTime+''''
    
--分页
--===========================================================================================================    
    
    set @sqlPageed='select top('+cast(@PageSize as nvarchar(100))+') * from 
    (select ROW_NUMBER() over(order by x.Id) rowIndex,o.*,x.Name from XinXi x join BanJi b on x.XId=b.BId where 1=1 '+@sqlWhere+' ) t
    where rowIndex>'+cast((@PageIndex-1)*@PageSize as nvarchar(100))
    
    exec sp_executesql @sqlPageed
--=========================================================================================================
--获取总页数
--=========================================================================================================
declare @sqlCount nvarchar(max)=''

    set @sqlCount='select @PageCount=COUNT(1) from XinXi x join BanJi b on x.XId=b.BId where 1=1'+@sqlWhere

    exec sp_executesql @sqlCount,N'@PageCount int out',@PageCount out    
End

--添加存储过程
alter proc P_Add
(
@YTime varchar(20),
@XId int,
@Yint int,
@YName varchar(20)
)
as
begin

    set nocount on
    set xact_abort on
    declare @sql1 int=0,@sql2 int=0
    begin tran
    insert into YuDing values(@YTime,@XId,@Yint,@YName)
    set @sql2=@@IDENTITY
    set @sql1+=@@ERROR
    if @sql1<>0
    begin
        select 0 as Num
        rollback tran
    end
    else
    begin
        select 1 as Num
        commit tran
    end

end


--创建删除存储过程
alter proc P_Del
(
@YId int
)
as
begin
    set nocount on
    set xact_abort on
    --declare @sql1 int=0, @sql2 int=0

    begin tran

    select @sql2=Yint from YuDing where YId=@YId
    update XinXi set Xint=Xint-@sql2 where XId=(select XId from YuDing WHERE YId=@YId)
    SET @sql1+=@@ERROR

    update LeiXin set Lint=Lint+@sql2 where LId=(select LId from XinXi where XId=(select XId from YuDing where YId=@YId))
    set @sql1+=@@ERROR

    --delete from YuDing where YId=@YId
    --set @sql1+=@@ERROR

    if @sql1 <> 0
    begin 
        select 0 as Num
        rollback tran
    end
    else
    begin
        select 1 as Num
        commit tran
    end
end

exec P_Del 12

posted @ 2020-07-09 20:23  jieModels  阅读(23)  评论(0)    收藏  举报