游标简单的使用

GO

/****** Object:  StoredProcedure [dbo].[UP_Job_UpdatePromotionBeginInfo]    Script Date: 08/19/2014 19:02:11 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[UP_Job_UpdatePromotionBeginInfo]
AS
    BEGIN 
        DECLARE MyFirstCursor CURSOR
        FOR
            SELECT  a.ProductProID ,
                    a.productItemid ,
                    p.productid ,
                    a.ProPromKindID ,
                    a.PromPrice,
                    --新添加五个字段
                    a.IsLimitBuyStatus,
                    a.LimitBuyPersonalCount,
                    a.LimitBuyCount,
                    a.bDate,
                    a.eDate
            FROM    ProductPro a
                    INNER JOIN productitem item ON a.productitemid = item.productitemid
                    INNER JOIN product p ON p.productid = item.productid
            WHERE   a.BDate <= GETDATE()
                    AND a.EDate >= GETDATE()
                    AND a.[State] = 0

OPEN MyFirstCursor

DECLARE @ProductProID INT
        DECLARE @productItemid INT
        DECLARE @productid INT
        DECLARE @ProPromKindID INT
        DECLARE @num INT 
        DECLARE @PromPrice MONEY
        --新添加五个字段
        DECLARE @IsPur INT
        DECLARE @OnePurNum INT
        DECLARE @TotalPurNum INT
        DECLARE @StartDate DATETIME
        DECLARE @LastDate DATETIME
        FETCH NEXT FROM MyFirstCursor INTO @ProductProID, @productItemid, @productid, @ProPromKindID, @PromPrice,@IsPur,@OnePurNum,@TotalPurNum,@StartDate,@LastDate
        WHILE ( @@FETCH_STATUS = 0 )
            BEGIN
   --修改ProductPro 状态     
                UPDATE  dbo.ProductPro
                SET     [State] = 1
                WHERE   ProductProID = @ProductProID

UPDATE TOP ( 1 )
                        product
                SET     ProductAttributeID = @ProPromKindID ,
                        Price = @PromPrice ,
                        Price2 = @PromPrice
                WHERE   productid = @productid
         
                UPDATE TOP ( 1 )
                        productitem
                SET     OldPrice = price ,
                        price = @PromPrice
                        --新添加五个字段
                        ,[email protected]
                        ,[email protected]
                        ,[email protected]
                        ,[email protected]
                        ,[email protected]
                WHERE   productitemid = @productItemid

--xia 20140218 限制团购数量 改动
                SELECT  @num = LimitNum
                FROM    dbo.ProductPro
                WHERE   ProductProID = @ProductProID
                UPDATE  productitem
                SET     StoreNum = @num
                WHERE   ProductItemID = @productItemid
               
           
    
         
            --读取下一行
                FETCH NEXT FROM MyFirstCursor INTO @ProductProID,
                    @productItemid, @productid, @ProPromKindID, @PromPrice
            END
    --关闭游标
        CLOSE MyFirstCursor
    --删除游标
        DEALLOCATE MyFirstCursor
   
  
    END

游标简单的使用

时间: 2024-10-10 04:22:10

游标简单的使用的相关文章

ORALCE 游标简单的实例

--取简单的游标 declare cursor sp is select * from user_tables; myrecord user_tables%ROWTYPE; begin open sp ; fetch sp into myrecord; while sp%found loop dbms_output.put_line(myrecord.table_name); fetch sp into myrecord; end loop; close sp ; end; --带参数的游标 d

oracle 游标简单示例

1.游标的概念以及作用 游标(Cursor)可以使用户想操作数组一样对查询出来的结果集进行操作,可以形象的看做一个变动的光标,其实际行是一个指针,它在一段Oracle存放数据查询结果集或数据 操作集的内存中,这个指针可以指向结果集的任何位置. 分类: 分为静态游标和ref游标(暂不做介绍).静态游标 又分为 显示游标和隐式游标 ,隐式游标它是被oracle自动管理的 ,不需要详细的去了解只需要 知道怎么用就可以了. 显示游标:就是我们普遍使用的.就是在使用之前有着明确的定义,一般都会关联数据查询

游标简单使用

以下代码及注释 注:‘--’为注释 --创建一个游标declare my_cursor cursor for --my_cursor为游标的名称,随便起select id,name from my_user --这是游标my_cursor的值,这里随便发挥看业务场景--打开游标open my_cursor --没什么好说的--变量declare @id int --声明变量 ‘declare’为声明变量 ‘@name’为变量名称 后面为变量类型declare @name varchar(50)

Oracle实践--PL/SQL基础之游标

PL/SQL基础入门之游标 PL/SQL:过程语言(Procedure  Language)和结构化语言(Structured Query Language)结合而成的编程语言,是对SQL的扩展,支持多种数据类型,如大对象和集合类型,可使用条件和循环等控制语句,可创建存储过程,程序包和触发器等,给sql语句的执行添加程序逻辑,与Oracle服务器和Oracle工具紧密集成,具有可移植性,灵活性和安全性. ----------------------------------------------

数据库的游标

一,游标是什么? 游标是一段私有的SQL工作区,也就是一段内存区域,用于暂时存放受SQL语句影响到的数据.通俗理解就是将受影响的数据暂时放到了一个内存区域的虚表中,而这个虚表就是游标. 二,作用是什么? 1,大家都知道数据库中的事物可以回滚,而游标在其中起着非常重要的作用,由于对数据库的操作我们会暂时放在游标中,只要不提交,我们就可以根据游标中内容进行回滚,在一定意义有利于数据库的安全. 2,另外,在Oracle中PL/SQL只能返回单行数据,而游标弥补了这个不足.相当于ADO.NET中的Dat

MySql 中游标,事务,终止存储过程方法总结

最近在项目开发中,有段逻辑处理,需要在网站,app,后台分别运行,这样给后期的维护带来了很大的不方便,容易遗漏app端或者后台,所以讲java代码转换成存储过程,把逻辑处理写在了mysql端,其中遇到游标,事务的处理.问题并不困难,只是容易忘记,做了一下总结: DECLARE err INT DEFAULT 0;#声明一个整形变量err,默认值是0 DECLARE orderDone INT DEFAULT FALSE;-- 遍历游标结束标识 DECLARE cur_order CURSOR F

MySQL 存储过程/游标/触发器/事务

来源:http://www.cnblogs.com/zhuyp1015/p/3575823.html 将会用到的几个表 mysql> DESC products; +------------+--------------+------+-----+---------+----------------+| Field      | Type         | Null | Key | Default | Extra          |+------------+--------------+-

cursor

cursor 一.分类: 静态游标 显式游标(需要明确定义) 隐式游标(所有dml语句都为隐式游标,for循环也是隐式游标) ref游标 (尽量不用ref游标,ref游标可在程序间传递数据集) 强类型ref游标(定义中有返回值) 弱类型ref游标(定义中无返回值) 二.游标的几个状态值:(%前接游标类型的变量) %found %notfound %isopen %rowcount:当前游标遍历到的行值 三.粗暴的定义:用于遍历查询结果集,从而依次对结果集中的行做出相关操作: 四.各种游标简单实例

Oracle 存储过程实例2

--创建存储过程 CREATE OR REPLACE PROCEDURE xxxxxxxxxxx_p ( --参数IN表示输入参数,OUT表示输入参数,类型可以使用任意Oracle中的合法类型. is_ym IN CHAR ) AS --定义变量 vs_msg VARCHAR2(4000); --错误信息变量 vs_ym_beg CHAR(6); --起始月份 vs_ym_end CHAR(6); --终止月份 vs_ym_sn_beg CHAR(6); --同期起始月份 vs_ym_sn_en