zoukankan      html  css  js  c++  java
  • SQL游标使用

    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
  • 相关阅读:
    json的eval的小问题
    关于insertBefore
    关于touch-action
    关于 please verify the preference field with the prompt:Tomcat JDK name 问题解决
    总结一下,以软件开发生命周期来说明不同的测试的使用情况
    用户需求、己、竞争对手的关系
    苹果电脑快捷键大全
    软件工程与计算机科学的区别
    有人认为,“中文编程”是解决中国程序员编程效率的秘密武器,请问它是一个“银弹”么?
    Maven 和IDEA的初始配置
  • 原文地址:https://www.cnblogs.com/zhangpan1244/p/2324388.html
Copyright © 2011-2022 走看看