alter procedure [dbo].[p_sync_sms_records]
as
declare @type varchar(5)
declare @send_number varchar(21)
declare @recv_number varchar(21)
declare @content varchar(256)
declare @created_at datetime
declare @area_id varchar(5),
@sql varchar(5000),
@row_value varchar(120),
@row_a varchar(20),
@row_b varchar(20),
@row_c varchar(20),
@row_d varchar(20),
@row_e varchar(20),
@row_f varchar(20)
/*
exec [p_sync_sms_records]
*/
--初始化游标
DECLARE cur CURSOR FOR
SELECT type,send_number,recv_number,content,created_at
FROM original_sms_records
WHERE convert(varchar(10),created_at,121)=convert(varchar(10),getdate(),121)
--打开游标
OPEN cur
FETCH next FROM cur INTO @type,@send_number,@recv_number,@content,@created_at
--置游标于下一条
WHILE @@FETCH_STATUS = 0
BEGIN
select @area_id=dbo.f_region(@recv_number)
DECLARE row_value CURSOR FOR
SELECT value FROM f_splitstring(@content,' ')
OPEN row_value
FETCH next FROM row_value INTO @row_value
declare @i int
set @i=1
set @row_a=''
set @row_b=''
set @row_c=''
set @row_d=''
set @row_e=''
set @row_f=''
WHILE @@FETCH_STATUS = 0
BEGIN
if @i<=6
begin
if @i=1
set @row_a=@row_value
else if @i=2
set @row_b=@row_value
else if @i=3
set @row_c=@row_value
else if @i=4
set @row_d=@row_value
else if @i=5
set @row_e=@row_value
else
set @row_f=@row_value
set @i=@i+1
FETCH NEXT FROM row_value INTO @row_value
end
else
begin
FETCH NEXT FROM row_value
break
end
END
select top 1 1 from detail_sms_records
where send_number=@send_number and recv_number=@recv_number and area_id=area_id
and row_a=@row_a and row_b=@row_b and row_c=@row_c and row_d=@row_d and row_e=@row_e and row_f=@row_f
if @@ROWCOUNT=0
begin
insert into detail_sms_records
(type,send_number,recv_number,area_id,row_a,row_b,row_c,row_d,row_e,row_f,content,created_at)
values (@type,@send_number,@recv_number,@area_id,@row_a,@row_b,@row_c,@row_d,@row_e,@row_f,@content,@created_at)
end
CLOSE row_value
DEALLOCATE row_value
FETCH next FROM cur INTO @type,@send_number,@recv_number,@content,@created_at
END
--关闭游标
CLOSE cur
DEALLOCATE cur
分享到:
相关推荐
使用游标浏览学生记录,创建存储过程,包含游标,浏览学生记录
在SQL编程中,游标(Cursor)是一种非常重要的工具,特别是在处理多数据库查询时,它允许我们逐行处理结果集,而不是一次性加载所有数据。在标题"利用游标多数据库查询单条数据方法"中提到的场景,游标被用于在10多...
使用游标可以方便地访问查询结果集中的每一行,这对于处理大量数据是非常有用的。游标主要分为两种类型:显式游标和隐式游标。显式游标是用户通过编程定义的,可以处理多行数据;而隐式游标则是由数据库系统自动处理...
在Java的Spring框架中,`JdbcTemplate`是一个非常重要的组件,它提供了数据库操作的简单抽象,使得开发者可以方便地执行SQL语句而无需编写复杂的DAO(数据访问对象)层。在处理大量数据时,传统的分页方法可能会导致...
利用游标执行删除查询统计 cursor, 执行动态sql
Oracle 游标是一种非常重要的概念,它可以帮助开发者更方便地查询数据库,获取记录集合(结果集)的指针,并对其进行处理。本文对 Oracle 游标的概念、分类、声明方式、属性和应用进行了详细的介绍,希望能够帮助...
在Java数据库连接(JDBC)中,游标(Cursor)是一种重要的概念,它允许我们以迭代的方式处理查询结果集。游标提供了前后移动查询结果的能力,这对于实现分页查询非常有用,尤其是处理大数据量时,避免一次性加载全部...
在Oracle数据库中,游标是一种非常重要的机制,它允许用户在程序中对查询结果进行逐行处理。游标分为两种主要类型:**隐式游标**和**显示游标**。此外,还可以利用游标进行循环处理,以实现更复杂的数据操作需求。 ...
多维度查询时通常需要建立多个游标循环,查询效率无法得到保障,现在通过游标和substr()函数相结合的方式提高查询效率
Oracle 游标是一种数据库编程工具,它允许程序员逐行处理查询结果集,而不仅仅是一次性获取所有数据。在Oracle中,游标尤其适用于处理大量数据,或者需要根据当前数据行进行决策的情况。游标通常与存储过程结合使用...
PB游标,全称PowerBuilder游标,是PowerBuilder编程环境中用于处理数据库查询结果的一种机制。游标允许程序逐条处理查询结果集,而不是一次性获取所有数据,这在处理大量数据或需要动态过滤数据时非常有用。以下是...
在数据库领域,游标(Cursor)是一种用于处理数据查询结果集的强大工具,尤其在Oracle数据库中,游标的应用极为广泛且功能强大。本文将深入探讨Oracle数据库中游标的基本概念、类型、使用方法以及其在数据处理中的...
当查询返回结果超过一行时,就需要一个显式游标。 REF 游标是动态关联结果集的临时对象。游标的状态是通过属性来表示,可以通过 %Found、%NotFound、%ISOpen、%RowCount 等属性来获取游标的状态。 在使用游标时,...
通过定义游标、打开游标、获取数据、处理数据、关闭游标这一系列步骤,我们可以有效地对查询结果进行逐行处理。这种技术特别适用于需要对每一行数据进行复杂操作或者需要根据查询结果动态调整处理逻辑的情况。同时,...
在数据库实验中,游标(Cursor)是一种重要的数据库对象,它允许开发者逐行处理查询结果,从而实现复杂的业务逻辑。在本实验中,我们将探索游标的使用和并发control机制,以提高数据库的性能和可靠性。 游标的概念...
波形图游标功能在许多科学计算和数据分析应用中都是一种非常重要的工具,它允许用户在可视化图形上精确地定位和测量数据点。在LabVIEW(Laboratory Virtual Instrument Engineering Workbench)这样的图形化编程环境...
游标允许我们逐行处理查询结果,这对于迭代、条件判断或者数据更新等任务非常实用。下面,我们将深入探讨Oracle游标的使用示例及其相关的知识点。 首先,游标的基本概念是它提供了一种方式来跟踪并控制SQL查询的...
Oracle 数据库游标是处理多行查询结果的重要工具,可以帮助开发者更方便地处理数据。在使用游标时,需要注意声明、打开、提取数据、关闭等步骤,以确保数据的正确性和安全性。 在实际应用中,游标可以用于各种场景...
游标是数据库管理系统中的一个重要概念,主要用于处理查询结果集中的数据记录。它允许用户逐行地读取和处理这些记录,这对于需要对每一行数据进行特定操作的情况非常有用。在SQL语言中,游标通常用于存储过程或函数...