`

存储过程,游标 的一个实例

阅读更多

 

存储过程,游标 的一个实例

begin  

    declare stop_flag int DEFAULT 0;#声明一个标记,当游标状态为最后一条记录时,修改该变量  

declare productName VARCHAR (100);

declare productUrl VARCHAR (100);

declare productImgUrl VARCHAR (100);

declare productCurrentPrice DOUBLE ;

declare productOnTime LONG ;

declare shopId VARCHAR (50);

declare productTbId VARCHAR (50);

declare offerStatus VARCHAR (50);

declare productId VARCHAR(50);

 

 

    declare cur1 cursor for SELECT  t1.`subject`, t2.image_uri, t3.price, t1.FN_SHOP_ID, t1.gmt_create, t1.offer_status, t1.details_url, t1.offer_id FROM u_sync_albb_offer t1 LEFT JOIN ( SELECT image_uri, tt.offer_id FROM u_sync_albb_offer_image_info tt GROUP BY tt.offer_id ) t2 ON t1.offer_id = t2.offer_id LEFT JOIN ( SELECT price, ty.offer_id FROM U_SYNC_ALBB_OFFER_PRICE_RANGE_INFO ty GROUP BY ty.offer_id ) t3 ON t1.offer_id = t3.offer_id WHERE t1.SYNC_STATUS = 0;  

#查询待处理的商品信息

   DECLARE  CONTINUE HANDLER FOR NOT FOUND  SET stop_flag=1;    

    open cur1;#打开游标  

 

productCursorLoop: LOOP

fetch cur1 into productName,productImgUrl,productCurrentPrice,shopId,productOnTime,offerStatus,productUrl,productTbId; #读取数据到游标  

if stop_flag=1 then

leave productCursorLoop;

ELSE

select m.PRODUCT_ID INTO productId from mk_commodity_information m where m.SHOP_ID= shopId and m.PRODUCT_TB_ID= productTbId;(这句有问题,游标中不允许出现select into 的句子,改造方法就是在创建游标的时候,创建两个游标,分别处理不同情况)

IF productId is not NULL THEN

UPDATE mk_commodity_information SET PRODUCT_NAME = productName, PRODUCT_URL = productUrl, PRODUCT_IMG_URL = productImgUrl, PRODUCT_CURRENT_PRICE = productCurrentPrice, PRODUCT_STATUS = offerStatus, TWO_DIMENSION_CODE_STATUS = '0' WHERE PRODUCT_ID = productId;

ELSE

INSERT INTO mk_commodity_information( PRODUCT_ID, PRODUCT_NAME, PRODUCT_IMG_URL, PRODUCT_CURRENT_PRICE, SHOP_ID, PRODUCT_ON_TIME, PRODUCT_STATUS, PRODUCT_URL, PRODUCT_TB_ID, TWO_DIMENSION_CODE_STATUS ) VALUES(f_id_get('CARD_PRO_CD'),productName,productImgUrl,productCurrentPrice,shopId,productOnTime,offerStatus,productUrl,productTbId,'0'); 

END IF;

UPDATE u_sync_albb_offer SET SYNC_STATUS=1 WHERE offer_id=productTbId AND FN_SHOP_ID=shopId;

END IF;

 

END LOOP;  

close cur1;#关闭游标  

END

分享到:
评论

相关推荐

    oracle 的函数、存储过程、游标、简单实例

    这个过程接受一个部门ID,然后找到该部门的所有员工,将他们的薪水增加10%。 以上内容只是Oracle函数、存储过程和游标的基础介绍。实际应用中,你可能需要结合触发器、异常处理、动态SQL等更高级的概念。通过熟练...

    SqlServer存储过程游标

    ### SqlServer 存储过程与游标应用实例详解 #### 一、存储过程概述 在SQL Server中,存储过程是一种预编译的SQL语句集合,它可以被当作一个单独的对象来调用。存储过程可以提高应用程序性能,简化复杂的业务逻辑,...

    job 存储过程 视图 游标结合实例

    Job调用一个存储过程,该过程定义了一个游标来遍历视图“vw_unpaid_orders”,此视图显示了所有未支付的订单。游标逐行处理这些订单,通过发送电子邮件服务发送提醒。如果订单在设定时间内仍未支付,存储过程可能会...

    用callabledStatement调用oracle存储过程实用例子(IN OUT 传游标)

    存储过程 TESTC 有一个输出参数,类型为游标类型。我们使用 CALLABLESTATEMENT 来调用存储过程,获取游标类型参数的值,并将其转换为 ResultSet 对象。最后,我们使用 while 循环来遍历 ResultSet 对象,并将结果...

    oracle游标使用及实例

    ### Oracle游标使用及实例详解 #### 一、Oracle游标概述 在Oracle数据库中,游标(Cursor)是一种用于处理SQL查询结果集的方式。它允许用户逐行地读取和处理查询结果,这对于需要对每一行数据进行特定操作的情况非常...

    Oracle存储过程实例使用显示游标

    一个存储过程通常包含以下部分: 1. **声明部分**:在这里声明变量、游标和其他所需对象。 2. **执行部分**:包含SQL和PL/SQL语句,执行实际的操作。 3. **异常处理部分**:捕获并处理可能出现的错误或异常。 在...

    oracle存储过程使用游标对多表操作例子

    本文将深入探讨如何在Oracle存储过程中使用游标进行多表操作,具体通过一个示例来展示这一过程。 ### 标题与描述分析 标题:“oracle存储过程使用游标对多表操作例子”直接指出了文章的主题是关于在Oracle环境下,...

    TSQL 存储过程 和 游标

    存储过程中不使用`GO`语句,因为`GO`在批处理中用于分隔命令,而存储过程本身就是一个批处理。 总之,TSQL的存储过程和游标是数据库管理和数据操作的重要工具。存储过程增强了SQL语言的功能,提高了代码复用性,...

    游标使用的实例,学习一点总结

    1. **声明游标**:使用 `DECLARE` 语句定义一个游标,并指定其检索的数据源。 ```sql DECLARE MyCur CURSOR SCROLL FOR SELECT * FROM b; ``` 这里声明了一个名为 `MyCur` 的游标,用于遍历表 `b` 中的所有...

    存储过程 游标 触发器 Oracle安装

    例如,你可以创建一个存储过程来处理批量数据更新,或者执行一系列相关的数据库操作。 接下来,我们来讨论“游标”。游标在数据库编程中用于处理单条记录,特别是在处理大量数据时非常有用。它允许我们逐行遍历查询...

    mysql复杂存储过程实例(游标、临时表、循环、递归)

    本资源结合实例实现一个复杂的存储过程,存储过程中有用到游标、临时表、循环、递归等知识,sql文件附有实例数据表创建的sql语句。

    数据库实例详解——图书管理系统(包括SQL代码,游标,存储过程)

    本实例将深入探讨如何构建一个完整的图书管理系统,涉及的关键知识点包括数据库的概念和逻辑结构设计,以及游标和存储过程的使用。 一、数据库概念与逻辑结构设计 1. 数据库概念:数据库是一个组织和存储数据的系统...

    一个SQL游标的应用实例.pdf

    **标题:** 一个SQL游标的应用实例.pdf **描述:** 一个SQL游标的应用实例.pdf **知识点提炼:** 1. **SQL游标概念与应用** 游标是一种数据库查询的结果集,它允许逐行访问结果集中的数据。它在程序中用以遍历和处理...

    sql server 游标实例

    ### SQL Server 游标实例详解 #### 一、游标概念与作用 在SQL Server中,游标是一种数据库对象,允许我们逐行处理查询结果集中的数据。这与普通的SQL查询不同,在普通的查询中,结果集通常是作为一个整体来处理的。...

    Mysql存储过程中游标的用法实例

    本文实例讲述了Mysql存储过程中游标的用法。分享给大家供大家参考。具体如下: 1. 批量插入商户路由关联数据: DELIMITER $$ USE `mmm_mac`$$ DROP PROCEDURE IF EXISTS `批量插入商户路由关联数据`$$ CREATE ...

    Oralce PLSQL存储过程之游标实践!

    通过以上实例,我们了解了在PL/SQL存储过程中使用游标的多种方式,包括简单的单值输出、遍历游标、带参数的游标以及使用多个游标进行复杂的数据处理。掌握这些技术将有助于开发出更加高效和健壮的应用程序。

    游标实例与返回结果集的存储过程

    根据提供的文件信息,我们可以深入探讨其中涉及的关键概念和实践应用,包括Oracle中的游标使用方法、存储过程的定义以及如何创建并调用返回结果集的存储过程。 ### 1. 游标的使用方法 #### 1.1 游标基本概念 在...

    SQL工作笔记-达梦7存储过程中游标的使用(for循环 IF等)

    在存储过程`SELECT_STUDENT`中,创建了一个名为`myCursor`的游标,用于选取`cfftest.student`表中的`id`和`name`字段。游标的打开、遍历和关闭通过以下语句完成: ```sql DECLARE myCursor CURSOR FOR SELECT id, ...

    sql 游标遍历 实例

    1. **声明游标**:定义一个游标变量,指定其返回的记录集。例如: ```sql DECLARE myCursor CURSOR FOR SELECT * FROM myTable; ``` 2. **打开游标**:使用`OPEN`语句启动游标,使其可以开始遍历记录。 ```sql ...

    db2 存储过程语法与实例

    例如,我们可以创建一个简单的存储过程,接受一个整数参数并返回它的平方: ```sql CREATE PROCEDURE square(IN num INT, OUT result INT) BEGIN SET result = num * num; END; ``` 3. **调用存储过程** ...

Global site tag (gtag.js) - Google Analytics