存储过程,游标 的一个实例
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
相关推荐
这个过程接受一个部门ID,然后找到该部门的所有员工,将他们的薪水增加10%。 以上内容只是Oracle函数、存储过程和游标的基础介绍。实际应用中,你可能需要结合触发器、异常处理、动态SQL等更高级的概念。通过熟练...
### SqlServer 存储过程与游标应用实例详解 #### 一、存储过程概述 在SQL Server中,存储过程是一种预编译的SQL语句集合,它可以被当作一个单独的对象来调用。存储过程可以提高应用程序性能,简化复杂的业务逻辑,...
Job调用一个存储过程,该过程定义了一个游标来遍历视图“vw_unpaid_orders”,此视图显示了所有未支付的订单。游标逐行处理这些订单,通过发送电子邮件服务发送提醒。如果订单在设定时间内仍未支付,存储过程可能会...
存储过程 TESTC 有一个输出参数,类型为游标类型。我们使用 CALLABLESTATEMENT 来调用存储过程,获取游标类型参数的值,并将其转换为 ResultSet 对象。最后,我们使用 while 循环来遍历 ResultSet 对象,并将结果...
### Oracle游标使用及实例详解 #### 一、Oracle游标概述 在Oracle数据库中,游标(Cursor)是一种用于处理SQL查询结果集的方式。它允许用户逐行地读取和处理查询结果,这对于需要对每一行数据进行特定操作的情况非常...
一个存储过程通常包含以下部分: 1. **声明部分**:在这里声明变量、游标和其他所需对象。 2. **执行部分**:包含SQL和PL/SQL语句,执行实际的操作。 3. **异常处理部分**:捕获并处理可能出现的错误或异常。 在...
本文将深入探讨如何在Oracle存储过程中使用游标进行多表操作,具体通过一个示例来展示这一过程。 ### 标题与描述分析 标题:“oracle存储过程使用游标对多表操作例子”直接指出了文章的主题是关于在Oracle环境下,...
存储过程中不使用`GO`语句,因为`GO`在批处理中用于分隔命令,而存储过程本身就是一个批处理。 总之,TSQL的存储过程和游标是数据库管理和数据操作的重要工具。存储过程增强了SQL语言的功能,提高了代码复用性,...
1. **声明游标**:使用 `DECLARE` 语句定义一个游标,并指定其检索的数据源。 ```sql DECLARE MyCur CURSOR SCROLL FOR SELECT * FROM b; ``` 这里声明了一个名为 `MyCur` 的游标,用于遍历表 `b` 中的所有...
例如,你可以创建一个存储过程来处理批量数据更新,或者执行一系列相关的数据库操作。 接下来,我们来讨论“游标”。游标在数据库编程中用于处理单条记录,特别是在处理大量数据时非常有用。它允许我们逐行遍历查询...
本资源结合实例实现一个复杂的存储过程,存储过程中有用到游标、临时表、循环、递归等知识,sql文件附有实例数据表创建的sql语句。
本实例将深入探讨如何构建一个完整的图书管理系统,涉及的关键知识点包括数据库的概念和逻辑结构设计,以及游标和存储过程的使用。 一、数据库概念与逻辑结构设计 1. 数据库概念:数据库是一个组织和存储数据的系统...
**标题:** 一个SQL游标的应用实例.pdf **描述:** 一个SQL游标的应用实例.pdf **知识点提炼:** 1. **SQL游标概念与应用** 游标是一种数据库查询的结果集,它允许逐行访问结果集中的数据。它在程序中用以遍历和处理...
### SQL Server 游标实例详解 #### 一、游标概念与作用 在SQL Server中,游标是一种数据库对象,允许我们逐行处理查询结果集中的数据。这与普通的SQL查询不同,在普通的查询中,结果集通常是作为一个整体来处理的。...
本文实例讲述了Mysql存储过程中游标的用法。分享给大家供大家参考。具体如下: 1. 批量插入商户路由关联数据: DELIMITER $$ USE `mmm_mac`$$ DROP PROCEDURE IF EXISTS `批量插入商户路由关联数据`$$ CREATE ...
通过以上实例,我们了解了在PL/SQL存储过程中使用游标的多种方式,包括简单的单值输出、遍历游标、带参数的游标以及使用多个游标进行复杂的数据处理。掌握这些技术将有助于开发出更加高效和健壮的应用程序。
根据提供的文件信息,我们可以深入探讨其中涉及的关键概念和实践应用,包括Oracle中的游标使用方法、存储过程的定义以及如何创建并调用返回结果集的存储过程。 ### 1. 游标的使用方法 #### 1.1 游标基本概念 在...
在存储过程`SELECT_STUDENT`中,创建了一个名为`myCursor`的游标,用于选取`cfftest.student`表中的`id`和`name`字段。游标的打开、遍历和关闭通过以下语句完成: ```sql DECLARE myCursor CURSOR FOR SELECT id, ...
1. **声明游标**:定义一个游标变量,指定其返回的记录集。例如: ```sql DECLARE myCursor CURSOR FOR SELECT * FROM myTable; ``` 2. **打开游标**:使用`OPEN`语句启动游标,使其可以开始遍历记录。 ```sql ...
例如,我们可以创建一个简单的存储过程,接受一个整数参数并返回它的平方: ```sql CREATE PROCEDURE square(IN num INT, OUT result INT) BEGIN SET result = num * num; END; ``` 3. **调用存储过程** ...