游标

SQL中的全局变量和局部变量(@@/@)

核能气质少年 提交于 2019-12-06 08:25:41
在SQL中,我们常常使用临时表来存储临时结果,对于结果是一个集合的情况,这种方法非常实用,但当结果仅仅是一个数据或者是几个数据时,还要去建一个表,显得就比较麻烦,另外,当一个SQL语句中的某些元素经常变化时,比如选择条件,(至少我想)应该使用局部变量。当然MS SQL Server的全局变量也很有用。 >>>>局部变量 声明:DECLARE @local_variable data_type @local_variable 是变量的名称。变量名必须以 at 符 (@) 开头。data_type 是任何由系统提供的或用户定义的数据类型。变量不能是 text、ntext 或 image 数据类型。 示例: use master declare @SEL_TYPE char(2) declare @SEL_CUNT numeric(10) set @SEL_TYPE = 'U'/*user table*/ set @SEL_CUNT = 10 /*返回系统中用户表的数目*/ select @SEL_CUNT = COUNT(*) from sysobjects where type = @SEL_TYPE select @SEL_CUNT as 'User table ''s count' 如果要返回系统表的数目,可以用set @SEL_TYPE = 'S'

数据库 游标

拈花ヽ惹草 提交于 2019-12-06 03:21:59
转自 https://blog.csdn.net/liujiahan629629/article/details/18014051 以前也接触过游标,但是打心里说不是太理解,通过这次学习感觉理解深刻了很多,特此总结学习一下。 一,游标是什么? 游标是一段私有的SQL工作区,也就是一段内存区域,用于暂时存放受SQL语句影响到的数据。通俗理解就是将受影响的数据暂时放到了一个内存区域的虚表中,而这个虚表就是游标。 二,作用是什么? 1,大家都知道数据库中的事物可以回滚,而游标在其中起着非常重要的作用,由于对数据库的操作我们会暂时放在游标中,只要不提交,我们就可以根据游标中内容进行回滚,在一定意义有利于数据库的安全。 2,另外,在Oracle中PL/SQL只能返回单行数据,而游标弥补了这个不足。相当于ADO.NET中的Data table吧。 三,类型: 1,隐式游标:增删改等操作Oracle都会自动创建游标,暂时保存操作结果,也就是能够回滚的操作都会引发游标的创建。 2,显示游标:由开发人员通过程序显式控制,用于从表中取出多行数据,并将多行数据一行一行的单独进行处理. 四,属性: 属性 注释 %rowcount 受SQL影响的行数 %found Boolean值,是否还有数据 %notfound Boolean值,是否已无数据 %isopen 游标是否打开

plsql-游标

不打扰是莪最后的温柔 提交于 2019-12-06 02:38:13
简介:游标的使用,处理多行数据(类似于java中的Iterator迭代器,用于集合的遍历),游标基本不处理,直接把结果返回给程序处理,例如java的list    4.1显示游标      (1)定义游标 (2)打开游标 (3)提取游标 (4)对游标进行循环操作:判断游标中是否有下一条记录 (5)关闭游标    4.2隐式游标游标判断:游标属性     %FOUND    布尔型属性,当最近一次读记录时成功返回,则值为TRUE;      %NOTFOUND 布尔型属性,与%FOUND相反;      %ISOPEN 布尔型属性,当游标已打开时返回TRUE;      %ROWCOUNT 数字型属性,返回已从游标中读取的记录数; 1.基本使用方法,while循环 --要求: 打印出 80 部门的所有的员工的工资:salary: xxx declare --1. 定义游标 cursor salary_cursor is select salary from employees where department_id = 80; v_salary employees.salary%type; begin --2. 打开游标 open salary_cursor; --3. 提取游标,(单个值) fetch salary_cursor into v_salary; --正确的做法,循环

Mapbox矢量瓦片标准(mapbox vector-tile-spec)

泪湿孤枕 提交于 2019-12-06 02:28:20
目录 1. 目标 2. 文件格式 2.1. 文件后缀 2.2 MIME类型 3. 投影和范围 4. 内部结构 4.1. 图层 4.2. 要素 4.3. 几何图形编码 4.4. 要素属性 4.5. 示例 原始仓库地址: https://github.com/mapbox/vector-tile-spec 翻译原文地址: https://github.com/jingsam/vector-tile-spec/blob/master/2.1/README_zh.md 本文档中的“ 必须 ”、“ 必须不 ”、“ 必备 ”、" 应该 "、“ 不应该 ”、“ 建议 ”、“ 可以 ”、“ 可选 ”的含义参照 RFC 2119 。 1. 目标 本文档规定了一种节省存储空间的矢量瓦片数据编码格式。这种格式应用于客户端或服务端高效渲染或查询要素信息。 2. 文件格式 矢量瓦片文件采用 Google Protocol Buffers 进行编码。Google Protocol Buffers是一种兼容多语言、多平台、易扩展的数据序列化格式。 2.1. 文件后缀 矢量瓦片文件的后缀 应该 为 mvt 。例如, vector.mvt 。 2.2 MIME类型 矢量瓦片的MIME类型 应该 设置为 application/vnd.mapbox-vector-tile 。 3. 投影和范围

Oracle---作业5过程与函数

戏子无情 提交于 2019-12-05 19:15:14
Homework 1. 创建一个过程,能向dept表中添加一个新记录。(in参数) 2. 从scott.emp表中查询给定职工(提示:使用&来输入员工编号)的职工姓名和工资。(要求:利用out模式的参数将值传给调用者。) 3. 创建一个过程,在执行调用过程时,可随机输入emp表中某个雇员的姓名,根据雇员的姓名,返回该雇员的薪水值,并输出。(out参数)。 4. 编写过程,实现交换两个变量的值的功能。并输出交换前和交换后的两个值。(in out参数) 5. 创建存储过程,根据员工编号删除scott.emp表中的相关记录。(提示:由调用语句提供的员工编号来删除记录,要求员工编号可随机输入。) 6. 创建存储过程:输入部门编号,输出scott.emp表中该部门所有职工的员工编号、姓名、工作岗位。(提示:查询结果是多行,需使用游标,需把游标的定义像变量那样在过程或函数里定义,所以游标的定义要放在如下位置: 7. 编写一个过程,指定一个员工编号与一个工资增加的百分比,使emp表中将该员工的工资(sal)增加输入的百分比。 8. 创建函数,从scott.emp表中查询指定员工编号的职工的工资。 9. 创建函数,返回scott.emp表中指定职工的工资和姓名。(提示:返回值是两个,可用return返回一个,另一个用out参数带回) 10. 创建函数,根据给定的部门编号(提示: 利用&

SQL 循环语句几种写法

陌路散爱 提交于 2019-12-05 19:01:54
1、正常循环语句 declare @orderNum varchar(255) create table #ttableName(id int identity(1,1),Orders varchar(255)) declare @n int,@rows int insert #ttableName(orders) select orderNum from pe_Orders where orderId<50 --select @rows=count(1) from pe_Orders select @rows =@@rowcount set @n=1 while @n<=@rows begin select @orderNum=OrderNum from PE_Orders where OrderNum=(select Orders from #ttableName where id=@n) print (@OrderNum) select @n=@n+1 end drop table #ttableName 2、不带事务的游标循环 declare @orderN varchar(50)  --临时变量,用来保存游标值 declare y_curr cursor for   --申明游标 为orderNum select orderNum from pe_Orders where

SQL Server查询优化方法

ε祈祈猫儿з 提交于 2019-12-05 18:58:01
此文摘自网上,侵删! (查询速度慢的原因很多,常见如下几种) . 1、没有索引或者没有用到索引(这是 查询慢 最常见的问题,是程序设计的缺陷) 2、I/O吞吐量小,形成了瓶颈效应。 3、没有创建计算列导致查询不优化。 4、内存不足 5、网络速度慢 6、查询出的数据量过大(可以采用多次查询,其他的方法降低数据量) 7、锁或者死锁(这也是 查询慢 最常见的问题,是程序设计的缺陷) 8、sp_lock,sp_who,活动的用户查看,原因是读写竞争资源。 9、返回了不必要的行和列 10、查询语句不好,没有优化 可以通过如下方法来优化查询 1、把数据、日志、索引放到不同的I/O设备上,增加读取速度,以前可以将Tempdb应放在RAID0上, SQL 2000不在支持。数据量(尺寸)越大,提高I/O越重要. 2、纵向、横向分割表,减少表的尺寸(sp_spaceuse) 3、升级硬件 4、根据查询条件,建立索引,优化索引、优化访问方式,限制结果集的数据量。注意填充因子要适当(最好是使用默认值0)。索引应该尽量小,使用字节数小的列建索引好(参照索引的创建),不要对有限的几个值的字段建单一索引如性别字段 5、提高网速; 6、扩大服务器的内存,Windows 2000和 SQL server 2000能支持4-8G的内存。配置虚拟内存:虚拟内存大小应基于计算机上并发运行的服务进行配置。运行

存储过程和函数

风流意气都作罢 提交于 2019-12-05 18:16:48
存储过程和函数的引入   存储过程和函数是在数据库中定义一些 SQL 语句的集合,然后直接调用这些存储过程和函数来执行已经定义好   的SQL语句。 存储过程和函数可以避免开发人员重复的编写相同的SQL语句。 而且, 存储过程和函数是在MySQL   服务器中存储和执行的,可以减少客户端和服务器端的数据传输;、 创建存储过程和函数 创建存储过程 CREATE PROCEDURE sp_name([proc_parameter[,...]]) [characteristic...] routine_body sp_name 参数是存储过程的名称; proc_parameter 表示存储过程的参数列表; characteristic 参数指定存储过程的特性; routine_body 参数是 SQL 代码的内容,可以用 BEGIN...END 来标志 SQL 代码的开始和结束。 proc_parameter 中的每个参数由 3 部分组成。这 3 部分分别是输入输出类型、参数名称和参数类型。 [ IN | OUT | INOUT ] param_name type 其中,IN 表示输入参数;OUT 表示输出参数;INOUT 表示既可以是输入,也可以是输出;param_name 参数是 存储过程的参数名称;type 参数指定存储过程的参数类型,该类型可以是 MySQL 数据库的任意数据类型

SQL中游标的使用

℡╲_俬逩灬. 提交于 2019-12-05 16:41:43
SQL中游标的使用 类型:   1.普通游标 只有NEXT操作   2.滚动游标 有多种操作 1.普通游标 DECLARE @username varchar(20),@UserId varchar(100) DECLARE cursor_name CURSOR FOR --定义游标 SELECT TOP 10 UserId,UserName FROM UserInfo ORDER BY UserId DESC OPEN cursor_name --打开游标 FETCH NEXT FROM cursor_name INTO @UserId,@username --抓取下一行游标数据 WHILE @@FETCH_STATUS = 0 BEGIN PRINT '用户ID:'+@UserId+' '+'用户名:'+@username FETCH NEXT FROM cursor_name INTO @UserId,@username END CLOSE cursor_name --关闭游标 DEALLOCATE cursor_name --释放游标 结果: 用户ID:zhizhi 用户名:邓鸿芝 用户ID:yuyu 用户名:魏雨 用户ID:yujie 用户名:李玉杰 用户ID:yuanyuan 用户名:王梦缘 用户ID:YOUYOU 用户名:lisi 用户ID:yiyiren 用户名

java源码 -- AbstractList

倾然丶 夕夏残阳落幕 提交于 2019-12-05 11:24:06
AbstractList    AbstractList是实现List接口的抽象类 ,AbstractList抽象类与List接口的关系类似于AbstractCollection抽象类与Collection接口的关系。   AbstractList与AbstractCollection一样,也是通过提供一些方法的默认实现,简化我们编写List接口的列表类所需付出的努力。 实现列表类的需要记住:   1)要想实现一个不可修改的集合,只需要继承这个类,并且实现get(int)、size()方法;   2)要想实现一个可以修改的集合,还必须重写set(int, E)方法,该方法默认抛出一个异常。如果集合是可动态调整大小的,还必须重写add(int, E),remove(int)方法。 方法   public boolean add(E e){} public boolean add(E e) { add(size(), e); //通过调用add(int, E)方法进行添加 return true; } //以下方法没有具体的实现,调用它时,抛出异常。 public void add (int index, E element){ throw new UnsupportedOperationException (); } public E set (int index, E