USE [WPSIV2]
GO
/****** Object: StoredProcedure [dbo].[Proc_GetHotProduceByShopID] Script Date: 01/17/2012 10:17:09 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author : Isaac Zhang
-- Create date: 2011-1-11
-- Update date:
-- Parameter : @shopid 商铺ID,
-- @topNum 前几位
-- Description: 根据商铺ID获取热门商铺信息,
-- =============================================
ALTER PROCEDURE [dbo].[Proc_GetHotProduceByShopID]
@shopid BIGINT,
@topNum INT
AS
BEGIN
--需要返回的结果集
CREATE TABLE #RESULT(
pName VARCHAR(50),--商品名称
saleNum INT, --销售数量(最小单位计量)
unit VARCHAR(50), --最小单位
price DECIMAL(14,2)--商品总销售额
)
--创建临时表,作为处理的中间表
CREATE TABLE #temp(
pName VARCHAR(50),--商品名称
saleNum INT, --销售数量
unit VARCHAR(50), --单位
price DECIMAL(14,2)--商品总销售额
)
--声明过程中需要使用的临时参数
DECLARE @sql VARCHAR(2000)
DECLARE @pName VARCHAR(50),@unit VARCHAR(50)
DECLARE @saleNum INT
DECLARE @price DECIMAL(14,2)
SET @sql = 'INSERT INTO #TEMP(pName,saleNum,unit,price) SELECT b.name,a.quantity,a.unit,a.cost FROM dbo.pt_sale a
LEFT JOIN dbo.pt_product b
ON a.productid = b.productid'
EXEC (@sql);
--声明一个游标
DECLARE produceCursor CURSOR
FOR SELECT TOP 5 pName,saleNum FROM #TEMP
--打开一个游标
OPEN produceCursor
--循环一个游标
FETCH NEXT FROM produceCursor INTO @pName,@saleNum
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT #RESULT
( pName,saleNum, unit, price )
VALUES ( @pName, -- pName - varchar(50)
0, -- saleNum - int
@saleNum, -- unit - varchar(50)
NULL -- price - decimal
)
FETCH NEXT FROM produceCursor INTO @pName,@saleNum
END
--关闭游标
CLOSE produceCursor
--释放资源
DEALLOCATE produceCursor
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
BEGIN TRANSACTION
SELECT * FROM #RESULT;
IF @@ERROR=0
COMMIT
ELSE
ROLLBACK
END
GO
/****** Object: StoredProcedure [dbo].[Proc_GetHotProduceByShopID] Script Date: 01/17/2012 10:17:09 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author : Isaac Zhang
-- Create date: 2011-1-11
-- Update date:
-- Parameter : @shopid 商铺ID,
-- @topNum 前几位
-- Description: 根据商铺ID获取热门商铺信息,
-- =============================================
ALTER PROCEDURE [dbo].[Proc_GetHotProduceByShopID]
@shopid BIGINT,
@topNum INT
AS
BEGIN
--需要返回的结果集
CREATE TABLE #RESULT(
pName VARCHAR(50),--商品名称
saleNum INT, --销售数量(最小单位计量)
unit VARCHAR(50), --最小单位
price DECIMAL(14,2)--商品总销售额
)
--创建临时表,作为处理的中间表
CREATE TABLE #temp(
pName VARCHAR(50),--商品名称
saleNum INT, --销售数量
unit VARCHAR(50), --单位
price DECIMAL(14,2)--商品总销售额
)
--声明过程中需要使用的临时参数
DECLARE @sql VARCHAR(2000)
DECLARE @pName VARCHAR(50),@unit VARCHAR(50)
DECLARE @saleNum INT
DECLARE @price DECIMAL(14,2)
SET @sql = 'INSERT INTO #TEMP(pName,saleNum,unit,price) SELECT b.name,a.quantity,a.unit,a.cost FROM dbo.pt_sale a
LEFT JOIN dbo.pt_product b
ON a.productid = b.productid'
EXEC (@sql);
--声明一个游标
DECLARE produceCursor CURSOR
FOR SELECT TOP 5 pName,saleNum FROM #TEMP
--打开一个游标
OPEN produceCursor
--循环一个游标
FETCH NEXT FROM produceCursor INTO @pName,@saleNum
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT #RESULT
( pName,saleNum, unit, price )
VALUES ( @pName, -- pName - varchar(50)
0, -- saleNum - int
@saleNum, -- unit - varchar(50)
NULL -- price - decimal
)
FETCH NEXT FROM produceCursor INTO @pName,@saleNum
END
--关闭游标
CLOSE produceCursor
--释放资源
DEALLOCATE produceCursor
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
BEGIN TRANSACTION
SELECT * FROM #RESULT;
IF @@ERROR=0
COMMIT
ELSE
ROLLBACK
END