Creating SQL-Customized functions and commodity paging SQL stored procedures

Source: Internet
Author: User

--Determine if the brand ID exists when the product is screened

--select Dbo.isvalite (94,94)
Create function Isvalite (@brandId int, @bId int)
returns int
As
Begin
Declare @rNumber int
If @brandId = @bId
Set @rNumber = 1
Else
Set @rNumber = 0
If @bId = 0
Set @rNumber = 1
Return @rNumber
End
Go


--to determine whether the price of the product filter input has
--select Dbo.compareprice (269.00,100,300)
Create function Compareprice (@price decimal (8,2), @priceA decimal (8,2), @priceB decimal (8,2))
returns int
As
Begin
DECLARE @j int
If @price >= @priceA and @price <= @priceB
Set @j = 1
Else
Set @j = 0
If @priceA = 0 and @priceB = 0
Set @j = 1
Return @j
End
Go

--function equivalent to split
Create function F_split (@SourceSql varchar, @StrSeprate varchar)
Returns @temp table ( A varchar)
as
begin
Declare @i int
Set @SourceSql = RTRIM (LTRIM (@SourceSql))
Set @i = CHARINDEX (@ Strseprate, @SourceSql)--charindex returns the starting position of the specified expression in the string.
While @i >= 1
Begin
Insert @temp values (left (@SourceSql, @i-1)
Set @SourceSql =substring (@SourceSql, @ I+1,len (@SourceSql) [email protected])
Set @i=charindex (@StrSeprate, @SourceSql)
End
If @SourceSql <> '
Insert @temp values (@SourceSql)
return
End
Go
--select * from Dbo.f_split (' 198,199,204,210 ', ', ')

--function to determine whether the SKU contains the filter attribute value string for this input
Create function isexists (@stringCode varchar ($), @numbers varchar (500))
returns int
As
Begin
DECLARE @returnValue int
If @numbers = ' 0 '
Set @returnValue = 1
else if (select count (a) from Dbo.f_split (@stringCode, ', ')) < (select count (a) from Dbo.f_split (@numbers, ', '))
Set @returnValue = 0
else if (select count (j.a) from (Select a by Dbo.f_split (@stringCode, ', ')) J INNER JOIN (select a from Dbo.f_split (@numb ERs, ', ')) s on j.a = S.A.) = (select count (a) from Dbo.f_split (@numbers, ', '))
Set @returnValue = 1
Else
Set @returnValue = 0
Return @returnValue
End
Go

----Product Page Refresh Filter
Create proc Getextractcommodityrefresh
(
@SortId int,--Commodity category ID
@BrandId int,--Brand ID
@PriceA decimal (8,2),--query Price A
@PriceB decimal (8,2),--query price b
@PageNumber int,--Pages
@CommoditiesPerPage int,
@StrSelectionValueId varchar,--Commodity Filter Property value ID
Sort @orderAse int,--sales price score Shelf Time @orderAse = 3 for descending (DESC)
@HowManyCommodities int Output
)
As
DECLARE @Commodity table
(
RowNumber int,
Commodityid int,
Commodityname VarChar (300),
Marketprice Decimal (8,2),
Commodityaddtime DateTime,
Brandid int,
SortId int,
Cselectionattribute varchar (300),
Skuimg varchar (300),
Skuprice Decimal (8,2),
skuquanlity int
)
If @orderAse = 1
INSERT INTO @Commodity
Select Row_number () over (order by Cc.commodityid), CC. Commodityid,commodityname,marketprice,commodityaddtime,brandid,sortid,cselectionattribute,skuimg, SkuPrice, Skuquanlity from (Select distinct c.commodityid,c.commodityname,c.marketprice,c.commodityaddtime,c.brandid,c. Sortid,c.cselectionattribute,s.skuimg, s.skuprice,s.skuquanlity from commodity C left join SKUs s on C.commodityid = S.Comm Odityid) as CC
where SortId = @SortId and 1 = (select Dbo.isvalite (Brandid, @BrandId)) and 1= (select Dbo.isexists (Cselectionattribute, @St Rselectionvalueid) and 1 = (select Dbo.compareprice (Skuprice, @PriceA, @PriceB))

else If @orderAse = 2
INSERT INTO @Commodity
Select Row_number () over (Order by CC. Skuprice), CC. Commodityid,commodityname,marketprice,commodityaddtime,brandid,sortid,cselectionattribute,skuimg, SkuPrice, Skuquanlity from (Select distinct c.commodityid,c.commodityname,c.marketprice,c.commodityaddtime,c.brandid,c. Sortid,c.cselectionattribute,s.skuimg, s.skuprice,s.skuquanlity from commodity C left join SKUs s on C.commodityid = S.Comm Odityid) as CC
where SortId = @SortId and 1 = (select Dbo.isvalite (Brandid, @BrandId)) and 1= (select Dbo.isexists (Cselectionattribute, @St Rselectionvalueid) and 1 = (select Dbo.compareprice (Skuprice, @PriceA, @PriceB))
else If @orderAse = 3
INSERT INTO @Commodity
Select Row_number () over (Order by CC. Skuprice desc), CC. Commodityid,commodityname,marketprice,commodityaddtime,brandid,sortid,cselectionattribute,skuimg, SkuPrice, Skuquanlity from (Select distinct c.commodityid,c.commodityname,c.marketprice,c.commodityaddtime,c.brandid,c. Sortid,c.cselectionattribute,s.skuimg, s.skuprice,s.skuquanlity from commodity C left join SKUs s on C.commodityid = S.Comm Odityid) as CC
where SortId = @SortId and 1 = (select Dbo.isvalite (Brandid, @BrandId)) and 1= (select Dbo.isexists (Cselectionattribute, @St Rselectionvalueid) and 1 = (select Dbo.compareprice (Skuprice, @PriceA, @PriceB))

else If @orderAse = 4
INSERT INTO @Commodity
Select Row_number () over (order by Cc.commodityid Desc), CC. Commodityid,commodityname,marketprice,commodityaddtime,brandid,sortid,cselectionattribute,skuimg, SkuPrice, Skuquanlity from (Select distinct c.commodityid,c.commodityname,c.marketprice,c.commodityaddtime,c.brandid,c. Sortid,c.cselectionattribute,s.skuimg, S.skuprice, s.skuquanlity from commodity C left join SKUs s on C.commodityid = S.Com Modityid) as CC
where SortId = @SortId and 1 = (select Dbo.isvalite (Brandid, @BrandId)) and 1= (select Dbo.isexists (Cselectionattribute, @St Rselectionvalueid) and 1 = (select Dbo.compareprice (Skuprice, @PriceA, @PriceB))

else If @orderAse = 5
INSERT INTO @Commodity
Select Row_number () over (Order by CC. Commodityaddtime desc), CC. Commodityid,commodityname,marketprice,commodityaddtime,brandid,sortid,cselectionattribute,skuimg, SkuPrice, Skuquanlity from (Select distinct c.commodityid,c.commodityname,c.marketprice,c.commodityaddtime,c.brandid,c. Sortid,c.cselectionattribute,s.skuimg, S.skuprice, s.skuquanlity from commodity C left join SKUs s on C.commodityid = S.Com Modityid) as CC
where SortId = @SortId and 1 = (select Dbo.isvalite (Brandid, @BrandId)) and 1= (select Dbo.isexists (Cselectionattribute, @St Rselectionvalueid) and 1 = (select Dbo.compareprice (Skuprice, @PriceA, @PriceB))

Select @HowManyCommodities = count (*) from @Commodity
Select Commodityid,commodityname,marketprice,commodityaddtime,brandid,sortid,cselectionattribute,skuimg, Skuprice,skuquanlity from @Commodity where RowNumber > (@PageNumber-1) * @CommoditiesPerPage
and RowNumber <= @PageNumber * @CommoditiesPerPage
Go

DECLARE @HowManyCommodities Real
exec getextractcommodityrefresh 19,0,0,1000,1,20, ' 0 ', 1, @HowManyCommodities output
Select @HowManyCommodities
Go

----Extract product condition by product selection criteria
Create proc Getselectionconditioncommodities
(
@SortId int,
@BrandId int,
@PriceA Decimal (8,2),
@PriceB Decimal (8,2),
@StrSelectionValueId varchar,--Commodity Filter Property value ID
@HowManyCommodities int Output
)
As
DECLARE @Commodity table
(
RowNumber int,
Commodityid int,
Commodityname VarChar (300),
Marketprice Decimal (8,2),
Commodityaddtime DateTime,
Brandid int,
SortId int,
Cselectionattribute varchar (300),
Skuimg varchar (300),
Skuprice Decimal (8,2),
skuquanlity int
)
INSERT INTO @Commodity
Select Row_number () over (order by Cc.commodityid), CC. Commodityid,commodityname,marketprice,commodityaddtime,brandid,sortid,cselectionattribute,skuimg, SkuPrice, Skuquanlity from (Select distinct c.commodityid,c.commodityname,c.marketprice,c.commodityaddtime,c.brandid,c. Sortid,c.cselectionattribute,s.skuimg, s.skuprice,s.skuquanlity from commodity C left join SKUs s on C.commodityid = S.Comm Odityid) as CC
where SortId = @SortId and 1 = (select Dbo.isvalite (Brandid, @BrandId)) and 1= (select Dbo.isexists (Cselectionattribute, @St Rselectionvalueid) and 1 = (select Dbo.compareprice (Skuprice, @PriceA, @PriceB))

Select @HowManyCommodities = count (*) from @Commodity
Select Commodityid,commodityname,marketprice,commodityaddtime,brandid,sortid,cselectionattribute,skuimg, Skuprice,skuquanlity from @Commodity

Go

DECLARE @HowManyCommodities Real
exec getselectionconditioncommodities 19,0,0,0, ' 0 ', @HowManyCommodities output
Select @HowManyCommodities
Go

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.