12-存储过程

CREATE DATABASE fuxi12
USE fuxi12
--车辆信息
CREATE TABLE Car(
ID INT PRIMARY KEY IDENTITY, --主键
CarName VARCHAR(80), --车名
CarPinPaiID VARCHAR(50), --品牌id
CarTypeID VARCHAR(50), --车型
CarTyoeID2 VARCHAR(50), --车型2
CarImg VARCHAR(500), --车辆图片
CarRemark VARCHAR(500), --车辆描述
CarXingShi VARCHAR(100), --车辆形式
CarQuDong VARCHAR(100), --车辆驱动
CarFaDongJi VARCHAR(100), --发动机
CarZhouJu VARCHAR(100), --车辆轴距
CarPaiLiang VARCHAR(100), --车辆排量
CarZhiLiang INT, --车辆最大质量(KG)
CarNiuJu VARCHAR(100), --车辆扭矩
CarZhengBei INT, --整备质量(KG)
CarRanYou VARCHAR(50), --车辆燃油类型
CarYouXiang INT, --邮箱容积(L)
CarPriceID VARCHAR(50), --价格区间
CarXingTypeID VARCHAR(50), --车型分类
CarGroupID VARCHAR(50), --车型分组
CarZiXun VARCHAR(50), --热线咨询
CarPaiFang VARCHAR(50), --排放标准
CarPrice INT, --市场价
CarXingNum VARCHAR(50), --型号
CarTypeXing VARCHAR(50), --类型
CarBaoYang VARCHAR(50), --保养周期
CarGong VARCHAR(50), --功能类型
CarCreateTime VARCHAR(100), --上市时间
CarBianSuXiang VARCHAR(100), --变速箱
CarLongWidth VARCHAR(50), --长宽高
CarZhanTing VARCHAR(50), --销售展厅
CarChangName VARCHAR(50), --厂家名称
CarChangAddress VARCHAR(50), --厂家地址
CarChangPhone VARCHAR(50), --厂家电话
CarChangRemark VARCHAR(500) --厂家描述
)
SELECT * FROM dbo.Car
--房车品牌
CREATE TABLE CarPinPai
(
ID INT PRIMARY KEY IDENTITY,
PinPaiName VARCHAR(50)
)
INSERT INTO carpinpai VALUES ('旅顺房车'),('大众房车'),('红旗房车')
SELECT * FROM dbo.CarPinPai

--价格区间
CREATE TABLE CarPrice
(
ID INT PRIMARY KEY IDENTITY,
CarPriceName VARCHAR(50)
)
INSERT INTO dbo.CarPrice VALUES ('10万以下'),('11-20万'),('21-30万')
SELECT * FROM dbo.CarPrice

--车辆分类
CREATE TABLE CarXingType
(
ID INT PRIMARY KEY IDENTITY,
CaeXingName VARCHAR(50)
)
INSERT INTO dbo.CarXingType VALUES('小级车'),('中级车'),('高级车')

SELECT * FROM dbo.CarXingType

--车型分组
CREATE TABLE CarGroup
(
ID INT PRIMARY KEY IDENTITY,
CarGroupName VARCHAR(50)
)
INSERT INTO CarGroup VALUES('自行A'),('自行B'),('自行C')
SELECT * FROM dbo.CarGroup
--图片
CREATE TABLE CarImg
(
ID INT PRIMARY KEY IDENTITY,
ImgTitle VARCHAR(50),
ImgUlr VARCHAR(500),
ImgTypeID INT,
ImgTime DATETIME
)
INSERT INTO dbo.CarImg VALUES ('mingzi','lujing',1,'1995-5-5')
CREATE TABLE CarImgType
(
ID INT PRIMARY KEY IDENTITY,
CarImgTypeName VARCHAR(50)
)
INSERT INTO dbo.CarImgType VALUES('车型内饰'),('车型外观')
select a.*,b.CarImgTypeName AS CarImgTypeName from CarImg a join CarImgType b on a.ImgTypeID = b.ID


SELECT * FROM dbo.CarPinPai
SELECT * FROM dbo.CarPrice

--增删改存储过程
CREATE PROC Car_InsertUpdateDelete
(
@ID INT , --主键
@CarName VARCHAR(80), --车名
@CarPinPaiID VARCHAR(50), --品牌id
@CarTypeID VARCHAR(50), --车型
@CarTyoeID2 VARCHAR(50), --车型2
@CarImg VARCHAR(500), --车辆图片
@CarRemark VARCHAR(500), --车辆描述
@CarXingShi VARCHAR(100), --车辆形式
@CarQuDong VARCHAR(100), --车辆驱动
@CarFaDongJi VARCHAR(100), --发动机
@CarZhouJu VARCHAR(100), --车辆轴距
@CarPaiLiang VARCHAR(100), --车辆排量
@CarZhiLiang INT, --车辆最大质量(KG)
@CarNiuJu VARCHAR(100), --车辆扭矩
@CarZhengBei INT, --整备质量(KG)
@CarRanYou VARCHAR(50), --车辆燃油类型
@CarYouXiang INT, --邮箱容积(L)
@CarPriceID VARCHAR(50), --价格区间
@CarXingTypeID VARCHAR(50), --车型分类
@CarGroupID VARCHAR(50), --车型分组
@CarZiXun VARCHAR(50), --热线咨询
@CarPaiFang VARCHAR(50), --排放标准
@CarPrice INT, --市场价
@CarXingNum VARCHAR(50), --型号
@CarTypeXing VARCHAR(50), --类型
@CarBaoYang VARCHAR(50), --保养周期
@CarGong VARCHAR(50), --功能类型
@CarCreateTime VARCHAR(100), --上市时间
@CarBianSuXiang VARCHAR(100), --变速箱
@CarLongWidth VARCHAR(50), --长宽高
@CarZhanTing VARCHAR(50), --销售展厅
@CarChangName VARCHAR(50), --厂家名称
@CarChangAddress VARCHAR(50), --厂家地址
@CarChangPhone VARCHAR(50), --厂家电话
@CarChangRemark VARCHAR(500), --厂家描述
@DataTable_Action_ varchar(10)='' --操作方法 insert:添加 update:修改 delete:删除
)
AS
DECLARE @ReturnValue VARCHAR(20) --返回操作结果
SET @ReturnValue=-1
--开启事务
BEGIN TRAN
--异常处理
BEGIN TRY
--添加
IF(@DataTable_Action_='Insert')
BEGIN
INSERT INTO dbo.Car
( ID ,
CarName ,
CarPinPaiID ,
CarTypeID ,
CarTyoeID2 ,
CarImg ,
CarRemark ,
CarXingShi ,
CarQuDong ,
CarFaDongJi ,
CarZhouJu ,
CarPaiLiang ,
CarZhiLiang ,
CarNiuJu ,
CarZhengBei ,
CarRanYou ,
CarYouXiang ,
CarPriceID ,
CarXingTypeID ,
CarGroupID ,
CarZiXun ,
CarPaiFang ,
CarPrice ,
CarXingNum ,
CarTypeXing ,
CarBaoYang ,
CarGong ,
CarCreateTime ,
CarBianSuXiang ,
CarLongWidth ,
CarZhanTing ,
CarChangName ,
CarChangAddress ,
CarChangPhone ,
CarChangRemark
)
VALUES ( @ID ,
@CarName ,
@CarPinPaiID ,
@CarTypeID ,
@CarTyoeID2 ,
@CarImg ,
@CarRemark ,
@CarXingShi ,
@CarQuDong ,
@CarFaDongJi ,
@CarZhouJu ,
@CarPaiLiang ,
@CarZhiLiang ,
@CarNiuJu ,
@CarZhengBei ,
@CarRanYou ,
@CarYouXiang ,
@CarPriceID ,
@CarXingTypeID,
@CarGroupID ,
@CarZiXun ,
@CarPaiFang ,
@CarPrice ,
@CarXingNum ,
@CarTypeXing ,
@CarBaoYang ,
@CarGong ,
@CarCreateTime,
@CarBianSuXiang,
@CarLongWidth ,
@CarZhanTing ,
@CarChangName ,
@CarChangAddress,
@CarChangPhone ,
@CarChangRemark
)
SELECT @ReturnValue=SCOPE_IDENTITY()
END
--删除
IF(@DataTable_Action_='Delete')
BEGIN
DELETE dbo.Car WHERE ID=@ID
SET @ReturnValue=@@ROWCOUNT
END
COMMIT TRAN
END TRY
BEGIN CATCH
ROLLBACK TRAN
END CATCH
SELECT @ReturnValue
exec [commonPagination] @columns,@tableName,@orderColumnName,@order,@where,@pageIndex,@pageSize,@pageCount OUTPUT

--通用存储过程
create PROCEDURE [dbo].[commonPagination]
@columns varchar(500), --要显示的列名,用逗号隔开
@tableName varchar(100), --要查询的表名
@orderColumnName varchar(100), --排序的列名
@order varchar(50), --排序的方式,升序为asc,降序为 desc
@where varchar(100), --where 条件,如果不带查询条件,请用 1=1
@pageIndex int, --当前页索引
@pageSize int, --页大小(每页显示的记录条数)
@pageCount int out --总页数,输出参数
as
begin
declare @sqlRecordCount nvarchar(1000) --得到总记录条数的语句
declare @sqlSelect nvarchar(1000) --查询语句
set @sqlRecordCount=N'select @recordCount=count(*) from ' +@tableName + ' where '+ @where

declare @recordCount int --保存总记录条数的变量
exec sp_executesql @sqlRecordCount,N'@recordCount int output',@recordCount output

--动态 sql 传参
if( @recordCount % @pageSize = 0) --如果总记录条数可以被页大小整除
set @pageCount = @recordCount / @pageSize --总页数就等于总记录条数除以页大小
else --如果总记录条数不能被页大小整除
set @pageCount = @recordCount / @pageSize + 1 --总页数就等于总记录条数除以页大小加1

set @sqlSelect =
N'select '+@columns+' from (
select row_number() over (order by '
+@orderColumnName+' '+@order
+') as tempid,* from '
+@tableName+' where '+ @where
+') as tempTableName where tempid between '
+str((@pageIndex - 1)*@pageSize + 1 )
+' and '+str( @pageIndex * @pageSize)
exec (@sqlSelect) --执行动态Sql
end

原文地址:https://www.cnblogs.com/Wangyang11/p/10003556.html