- 浏览: 687548 次
- 性别:
- 来自: 成都
文章分类
- 全部博客 (129)
- Java (13)
- Android (9)
- J2ee (3)
- Swt/jface (0)
- SSH (9)
- C/C++ (1)
- php (1)
- Algorithm (2)
- Apache/Nginx (12)
- Bea/Tomcat (2)
- Oracle/Mysql (10)
- Sql/derby (17)
- Unix/Linux (11)
- Hadoop (1)
- Hbase (15)
- Redis (2)
- Lucene/Solr (0)
- Httpclient (1)
- Groovy (2)
- SoftwareEng (2)
- HTML/JS/CSS (3)
- Flex (1)
- log4j (1)
- Protocol (3)
- windows (0)
- Tools (1)
- docker (1)
- k8s (1)
- Business (3)
- Others (3)
最新评论
1. 存储过程返回游标
USE [TEST_DB] GO /****** [PRT].[Move_Data_Return_Cursor] Script Date: 03/08/2012 17:38:55 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /********************************************************************************* *把数据从表 DATA_SOURCE_TABLE 移动到表 TEST_TABLE . 返回游标供Move_Data_Handle_Cursor供Move_Data_Handle_Cursor存储过程使用. *DataServer: 110.110.110.110 *DataBase: TEST_DB *Name: [Move_Data_Return_Cursor] *Function: *Input: @overTimeHour INT *Output: @CURSOR_PriceChangeRecord CURSOR *Creator: GREATWQS 2012-02-23 *Updated: GREATWQS 2012-03-08 UPDATE NEW REQUIREMENT **********************************************************************************/ ALTER PROCEDURE [PRT].[Move_Data_Return_Cursor] -- Add the parameters for the stored procedure here @overTimeHour INT, @CURSOR_PriceChangeRecord CURSOR VARYING OUTPUT AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; -- print @overTimeHour; -- 1. 声明游标: DECLARE CURSOR_PriceChangeRecord SET @CURSOR_PriceChangeRecord = CURSOR FORWARD_ONLY STATIC FOR SELECT ItemNo, ItemName, ItemColor, ItemSize, ItemMadeIn, InDate FROM PRT.DATA_SOURCE_TABLE WITH(NOLOCK) WHERE InDate > dateadd(HOUR, -@overTimeHour, getdate()) -- 在这里进行时间的限定. -- 2. 打开游标 OPEN @CURSOR_PriceChangeRecord END
2. 存储过程处理返回游标
USE [TEST_DB] GO /****** [PRT].[Move_Data_RHandle_Cursor] Script Date: 03/08/2012 17:39:27 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /********************************************************************************* *把数据从表 DATA_SOURCE_TABLE 移动到表 TEST_TABLE *把游标中的数据,插入到表TEST_TABLE. *DataServer: 110.110.110.110 *DataBase: TEST_DB *Name: [Move_Data_Handle_Cursor] *Function: *Input: @overTimeHour INT *Output: *Creator: GREATWQS 2012-02-23 *Updated: GREATWQS 2012-03-08 UPDATE NEW REQUIREMENT **********************************************************************************/ ALTER PROCEDURE [PRT].[Move_Data_Handle_Cursor] -- 超时时间(小时) @overTimeHour INT AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; DECLARE -- 需要插入表TEST_TABLE,数据来源声明 @ItemNumber_Insert CHAR(20), @ItemName_Insert CHAR(50), @ItemColor_Insert CHAR(10), @ItemSize_Insert CHAR(5), @ItemWhereMadeIn_Insert CHAR(20), @createTime_Insert DATETIME, @changeTime_Insert DATETIME, @lastChangeTime_Insert DATETIME, @priority_Insert INT, @itemType_Insert INT, @active_Insert INT, -- ItemNumber Record num in table @totalNum_SelectDB INT, @changeTime_SelectDB DATETIME -- Set Default Value SET @ItemWhereMadeIn_Insert = 0 SET @createTime_Insert = getdate() SET @lastChangeTime_Insert = null SET @priority_Insert = 0 SET @itemType_Insert = 0 SET @active_Insert = 1 -- 1. 声明游标: 在过程内部自己定义有游标时,调用游标前面不加@符号 DECLARE @CURSOR_Result CURSOR -- 2. 得到上个游标, 上个游标已经打开 EXEC Move_Data_Return_Cursor @overTimeHour, @CURSOR_PriceChangeRecord = @CURSOR_Result OUTPUT -- 3. 抓取游标中的数据: FETCH CURSOR_Result FETCH NEXT FROM @CURSOR_Result INTO @ItemNumber_Insert, @ItemName_Insert, @ItemColor_Insert, @ItemSize_Insert, @changeTime_Insert -- 4. 对游标中的每一个记录进行处理: 循环 WHILE (@@FETCH_STATUS = 0) BEGIN -- 查看此ItemNumber_Insert是否已经存在表中 SELECT TOP 1 @totalNum_SelectDB = COUNT(*) FROM PRT.TEST_TABLE WITH(NOLOCK) WHERE ItemNumber = @ItemNumber_Insert -- 如果表不存在此@ItemNumber_Insert, 则插入 IF @totalNum_SelectDB = 0 BEGIN INSERT INTO PRT.TEST_TABLE( [ItemNumber], [ItemName], [ItemColor], [ItemSize], [MadeIn], [createTime], [changeTime], [lastChangeTime], [priority], [itemType], [active]) VALUES ( @ItemNumber_Insert, @ItemName_Insert, @ItemColor_Insert, @ItemSize_Insert, @ItemWhereMadeIn_Insert, @createTime_Insert, @changeTime_Insert, @lastChangeTime_Insert, @priority_Insert, @itemType_Insert, @active_Insert ) END -- 如果此ItemNumber存在于表中 ELSE BEGIN -- 查看此ItemNumber_Insert的记录 SELECT TOP 1 @changeTime_SelectDB = changeTime FROM PRT.TEST_TABLE WITH(NOLOCK) WHERE ItemNumber = @ItemNumber_Insert -- If item has exists in table, and changeTime<=newItem.changeTime -- fresh the changeTime = newItem.changeTime, set active=1; IF @changeTime_SelectDB < @changeTime_Insert BEGIN UPDATE PRT.TEST_TABLE SET changeTime = @changeTime_Insert, active = 1 WHERE ItemNumber = @ItemNumber_Insert END END -- FETCH NEXT RECORD FROM @CURSOR_Result FETCH NEXT FROM @CURSOR_Result INTO @ItemNumber_Insert, @ItemName_Insert, @ItemColor_Insert, @ItemSize_Insert, @changeTime_Insert END -- 5. 关闭游标 CLOSE @CURSOR_Result -- 6. 删除游标 DEALLOCATE @CURSOR_Result -- Delete overtime item, set active=0:changeTime<getdate()-48; UPDATE PRT.TEST_TABLE SET active=0 WHERE changeTime < dateadd(HOUR, -@overTimeHour, getdate()) END
发表评论
-
Zz: MySQL索引背后的数据结构及算法原理
2015-08-13 14:52 725源: http://blog.codinglabs.org/ ... -
MySQL仿淘宝页面评论评分统计SQL
2013-08-07 20:51 2968假设淘宝有一张商品评论表,存储在MySQL中.表设计如下: ... -
MySQL优化
2013-08-03 11:22 1302一. MySQL服务端配置优化 1. my.ini配置优 ... -
MySQL使用单列索引和多列索引
2013-07-01 18:55 11293讨论MySQL选择索引时单列单列索引和多列索引使用,以及多 ... -
SQL 执行顺序
2012-11-08 14:43 724在查询中逻辑查询和物 ... -
Sqlserver: 使用临时表和表变量
2012-08-21 16:09 2226USE [SqlserverDBName] GO /* ... -
Sqlserver: 循环删除表数据
2012-08-15 14:07 4612USE mydatabase GO /******* ... -
SqlServer查看表/存储过程/视图定义
2012-07-20 13:42 3967SELECT definition FROM sys.sql ... -
Sqlserver 全局变量
2012-04-06 17:35 1655sql server全局变量 在SQL Server中,全局 ... -
SqlServer 游标使用规范
2012-03-21 14:46 1251定义游标时,如果不是特别需要,使用LOCAL关键显式的将游标 ... -
SQLSERVER存储过程用游标案例
2012-03-07 15:40 1549USE [TEST_DB] GO /****** [P ... -
SQLServer 建表 SQL 基础
2012-02-23 13:34 1277USE dbTest GO /************ ... -
Sqlserver 函数/事务/存储过程
2012-01-13 11:11 1935--聚合函数use pubsgoselect avg(dist ... -
Jdbc连接Sql Server2000/2005
2011-09-20 17:36 17851.准备工作: 准备相关的软件(Eclipse除外,开源软件可 ... -
Derby数据库的特性
2011-08-12 18:01 1527Derby的生动逼真的抚育使得它拥有一个令人惊奇的特性列表。有 ... -
Derby通过JDBC操作数据库(两种)
2011-08-12 15:07 16225Derby版本 : db-derby-10.8.1.2 ... -
Derby使用ij工具操作数据库
2011-08-12 14:40 9944解压apache的derby数据库:D:\Program Fi ...
相关推荐
游标是SqlServer中一种非常重要的数据库对象,它的作用是允许逐行访问由SQL Server返回的结果集。结果集通常包括多行数据,而游标则能够让用户以程序的方式逐行处理这些数据。在实际应用中,游标能够提供很多有用的...
在SQL Server中,存储过程和游标是两个重要的数据库编程元素,它们对于数据操作和管理起着关键作用。本文将深入探讨这两个概念,以及如何在实际应用中有效地使用它们。 **存储过程(Stored Procedures)** 存储...
在Java中,你可以通过CallableStatement对象调用存储过程,然后使用ResultSet对象作为游标处理返回的结果。 总结,SQL Server中的游标和存储过程的结合使用,为我们提供了一种灵活处理大量数据的方式。在存储过程中...
下面将详细解析标题“sql server 2008 存储过程示例带游标”所涉及的知识点,包括存储过程的创建、游标的使用以及SQL Server 2008中的特性。 ### 存储过程 存储过程是预编译的SQL语句集合,存储在数据库服务器上,...
在SQL Server中,数据库游标和函数是两个非常重要的概念,它们在数据处理和数据库操作中扮演着不可或缺的角色。游标允许我们逐行处理查询结果,而函数则提供了丰富的计算和逻辑处理能力。 首先,让我们深入理解SQL ...
在数据库管理领域,存储过程和游标是两个重要的概念,它们在数据操作和处理中扮演着不可或缺的角色。这里,我们将深入探讨这两个主题,以便更好地理解它们的功能、用途以及如何在实际开发中应用。 首先,存储过程...
表变量在SQL Server中是一种临时存储数据的结构,它与临时表相似但作用范围更小,仅限于当前批处理或存储过程。以下是一个使用表变量的例子: ```sql DECLARE @temp TABLE (id INT IDENTITY(1, 1), Name VARCHAR(10...
在SQL Server 2005中,游标提供了一种灵活的方式,让我们能够按需处理数据,尤其是在需要对结果集进行迭代操作,如逐行更新、删除或逐行处理复杂逻辑时。下面我们将深入探讨在SQL Server 2005中操作游标的详细步骤和...
总之,学习SQL Server存储过程涉及到T-SQL语法、游标操作、事务管理和XML处理等多个方面。通过阅读电子书,参考案例代码,不断实践和优化,你将能够掌握这一强大的数据库工具,提升你的数据库开发和管理技能。
在SQL Server中,游标是一种数据处理工具,它允许我们逐行处理查询结果集,而不仅仅是一次性返回所有数据。游标对于那些需要按顺序处理数据、分步操作或逐条检查结果的应用场景非常有用。本篇文章将深入探讨SQL ...
### Oracle到SQL Server存储过程语法转换详解 在数据库迁移项目中,从Oracle迁移到SQL Server是一种常见的场景。本文旨在提供一份详细的指南,帮助开发者更好地理解这两种数据库系统在存储过程方面的语法差异,并...
这篇学习笔记将深入探讨SQL Server存储过程的基本概念、创建、执行以及其在数据库开发中的应用。 一、存储过程的基本概念 存储过程是数据库中的一个对象,由一系列的SQL语句、控制流语句(如IF-ELSE,WHILE)和变量...
在给定的代码示例中,作者通过创建一个存储过程`proc_cursor`来实现基于游标的分页功能,这种方法虽然在某些场景下可能不如其他方法高效,但在理解SQL Server游标和分页原理方面提供了很好的学习材料。 ### 数据库...
总而言之,"SQL SERVER数据库开发之存储过程应用"教程会涵盖以上这些核心概念,并可能深入到高级主题,如动态SQL、游标、异常处理、临时表和变量的使用等。通过学习和实践,开发者可以提升在SQL Server环境下的...
在探讨SQL Server存储过程的相关知识点之前,首先需要明确存储过程的定义。存储过程是一组为了完成特定功能的SQL语句集合,它可以接受输入参数并可返回输出参数,还可以包含逻辑控制流程,比如条件判断、循环、分支...
游标和存储过程是数据库管理中非常重要的两个概念,它们在数据处理和应用程序开发中扮演着关键角色。本文将详细探讨这两个概念,以及如何在程序中创建和调用它们。 首先,我们来看“游标”(Cursor)。游标提供了一...
"SQL Server存储过程编程经验技巧" 本文将详细介绍SQL Server存储过程编程经验技巧,涵盖了SQL Server存储过程的基本概念、编写技巧和注意事项等内容。同时,本文也将对SQL Server存储过程的应用场景和优化方法进行...
本文介绍一种简单且高效的SQL Server存储过程实现分页的方法,这种方法仅需提供SQL语句、每页的记录数以及当前页数即可快速完成分页操作。 #### SQL Server存储过程分页原理 在SQL Server中,通过存储过程实现分页...