`

工作积累(游标、权限、数组)2

阅读更多

--游标

一、显式游标
通过使用显式游标,不仅可以一行一行地处理SELECT语句的结果,而且可以更新或删除当前游标行的数据。
需要注意的是,如果通过游标更新或删除数据,在定义游标时必须要带有FOR UPDATE子句。
DECLARE
  CURSOR emp_cursor IS SELECT * FROM emp FOR UPDATE;  
BEGIN
  FOR emp_record IN emp_cursor LOOP
    IF emp_record.deptno=3 THEN
      UPDATE emp SET sal=sal+200 WHERE CURRENT OF emp_cursor;
      dbms_output.put_line('雇员名: '||emp_record.ename||',部门号:'||emp_record.deptno||
       ',原工资:'||emp_record.sal|| ',新工资:'||(emp_record.sal+200));
    ELSE
      dbms_output.put_line('姓名:'||emp_record.ename||',部门号:'||emp_record.deptno||',工资:'||
emp_record.sal);
    END IF;
  END LOOP;
END;

二、隐式游标
隐式游标,是指不显式标注定义、打开和关闭部分的游标。如,在循环体中:
 BEGIN
 FOR cur IN (SELECT name FROM dept)   LOOP
 DBMS_OUT.PUT_LINE(cur.name);
 END LOOP;
 END;
 /

三、 Ref Cursor(动态游标):
1) 与隐式Cursor,显式Cursor的区别:Ref Cursor是可以通过在运行期间传递参数来获取数据结果集。而另外两种Cursor,是静态的,在编译期间就决定数据结果集。
2) Ref cursor的使用:
 Type [Cursor type name] is ref cursor
  Define 动态的Sql语句
  Open cursor
  操作数据---Fetch  [Cursor name]
 Close Cursor

 

 

--权限

1.如果给一个user用户授予一个表table的相应权限(INSERT UPDATE DELETE SELECT),然后又对该table表结构作相应的修改操作,
次时用户user对该表的权限将会丢失,必须重新为user授予权限。

--数组

在PL/SQL中是没有数组(Array)概念的。但是如果程序员想用Array的话,就得变通一下,用TYPE 和Table of Record来代替多维数组,一样挺好用的。
emp_type 就好象一个table 中的一条record 一样,里面有id, name,gender等。
emp_type_array 象个table, 里面含有一条条这样的record (emp_type),就象多维数组一样。

--单维数组
DECLARE
TYPE emp_ssn_array IS TABLE OF NUMBER
INDEX BY BINARY_INTEGER;
best_employees emp_ssn_array;
worst_employees emp_ssn_array;

BEGIN
best_employees(1) := '123456';
best_employees(2) := '888888';
worst_employees(1) := '222222';
worst_employees(2) := '666666';
FOR i IN 1..best_employees.count LOOP
DBMS_OUTPUT.PUT_LINE('i='|| i || ', best_employees= ' ||best_employees(i)
|| ', worst_employees= ' ||worst_employees(i));
END LOOP;
END;

--多维数组
DECLARE
TYPE emp_type IS RECORD
( emp_id employee_table.emp_id%TYPE,
emp_name employee_table.emp_name%TYPE,
emp_gender employee_table.emp_gender%TYPE );
TYPE emp_type_array IS TABLE OF emp_type INDEX BY BINARY_INTEGER;
emp_rec_array emp_type_array;
emp_rec emp_type;

BEGIN
emp_rec.emp_id := 300000000;
emp_rec.emp_name := 'Barbara';
emp_rec.emp_gender := 'Female';
emp_rec_array(1) := emp_rec;
emp_rec.emp_id := 300000008;
emp_rec.emp_name := 'Rick';
emp_rec.emp_gender := 'Male';
emp_rec_array(2) := emp_rec;
FOR i IN 1..emp_rec_array.count LOOP
DBMS_OUTPUT.PUT_LINE('i='||i
||', emp_id ='||emp_rec_array(i).emp_id
||', emp_name ='||emp_rec_array(i).emp_name
||', emp_gender = '||emp_rec_array(i).emp_gender);
END LOOP;
END;
用下面语句声明数组类型
type intarray is varry(30) of integer;

用下面语句声明一个数组变量
declare
A intarray;用下面语句声明数组类型
type intarray is varry(30) of integer;

用下面语句声明一个数组变量
declare
A intarray;用下面语句声明数组类型
type intarray is varry(30) of integer;

分享到:
评论

相关推荐

    PHP数组游标实现对数组的各种操作详解

    2. `next()` 函数:此函数将游标向数组的下一个元素移动。如果游标已经到达数组末尾,再次调用`next()` 不会改变游标位置。 在给出的代码示例中,我们看到如何使用`current()` 和 `next()` 实现类似`foreach`的循环...

    整理:oracle pl/sql 入门+ 数组使用+游标+动态SQL

    在这个“整理:Oracle PL/SQL 入门+数组使用+游标+动态SQL”文档中,我们将深入探讨这四个关键概念。 1. Oracle PL/SQL入门: - PL/SQL的基本结构:PL/SQL由声明部分、执行部分和异常处理部分组成,用于定义变量、...

    javaScript实现的多游标滑条

    为了使游标颜色可配置,可以在JavaScript代码中定义一个颜色数组,与游标数组一一对应。这样,每当创建一个新的游标时,就可以从颜色数组中取出对应的颜色赋值给该游标。 考虑到实际应用中可能需要将滑条的当前状态...

    DB2游标及动态SQL

    WHILE v_counter (v_numRecords / 2 + 1) DO FETCH c1 INTO medianSalary; SET v_counter = v_counter + 1; END WHILE; CLOSE c1; ``` 在这个示例中,我们声明了一个游标`c1`,用于处理来自`staff`表的数据,并且...

    labview中波形图的游标坐标

    2. **游标的添加与设置** - 要启用波形图上的游标,首先需要确保波形图允许游标。在波形图的属性对话框中,找到“游标”选项卡,勾选“启用游标”复选框。 - 默认情况下,LabVIEW提供单个游标,但可以设置为多游标...

    波形图游标功能_获取游标_

    2. **游标参数**:这些参数包括游标的颜色、形状、可见性以及精度。颜色和形状可以帮助用户更容易地区分不同游标;可见性可以控制游标是否显示在图形上;精度则决定了游标读数的分辨率。 3. **设置多个游标**:在...

    oracle 隐式游标,显示游标,游标循环

    2. **打开游标**:执行查询并将结果加载到游标中。 3. **提取数据**:从游标中逐行读取数据。 4. **关闭游标**:完成数据处理后关闭游标。 ##### 2. 声明游标 ```sql DECLARE CURSOR c_employees IS SELECT * FROM...

    LabVIEW 的游标图例

     图2 游标图例  选择游标图例右键快捷菜单的“创建游标”,在图形中添加游标。创建游标时,游标模式定义了游标位置,共有3种模式:自由、单曲线和多曲线,如图3所示。同一图形中可创建多个游标。  自由模式不...

    Mysql游标(循环操作)

    2. **打开游标**:使用`OPEN`命令来打开游标,使它准备好读取数据。 3. **获取数据**:通过`FETCH`命令从游标中获取一行数据到声明的变量中。 4. **处理数据**:在获取数据后,可以根据实际需求对数据进行各种处理。...

    游标和异常处理 游标和异常处理

    游标是 SQL 的一个内存工作区,由系统或用户以变量的形式定义。游标的作用就是用于临时存储从数据库中提取的数据块。在某些情况下,需要把数据从存放在磁盘的表中调到计算机内存中进行处理,最后将处理结果显示出来...

    oracle游标的总结oracle游标的总结

    2. 隐式游标:隐式游标是在执行插入(insert)、删除(delete)、修改(update)和返回单条记录的查询(select)语句时由 PL/SQL 自动定义的。 四、游标的属性 游标的属性包括: 1. %ROWCOUNT:返回 FETCH 语句...

    使用游标更新数据库

    2. FOR UPDATE 选项的使用 FOR UPDATE 选项用于锁定游标结果集中指定的行,以防止其他用户对该行进行修改。该选项可以指定锁定的列,如果忽略了 OF 子句,那么表中选择的数据行都将被锁定。 3. 游标更新的语法 ...

    游标卡尺SolidWorks图纸

    在SolidWorks中创建游标卡尺的三维模型,首先要理解其组成部分和工作原理。游标卡尺通常包括主尺、副尺(游标)、固定爪、活动爪、锁紧装置以及读数系统。建模时,我们需要分别创建这些部分,并通过装配功能将它们...

    SQL游标使用金典

    2. **打开游标**(`OPEN`):使游标准备好读取数据。 3. **提取数据**(`FETCH`):从游标中获取一行数据,并将其存储到变量中。 4. **关闭游标**(`CLOSE`):释放游标当前持有的数据,但不销毁游标本身。 5. **...

    oracle数据库的游标

    游标是Oracle数据库中一个重要的概念,它是一种在内存中用于存储SQL查询结果的临时工作区域。使用游标可以方便地访问查询结果集中的每一行,这对于处理大量数据是非常有用的。游标主要分为两种类型:显式游标和隐式...

    ORACLE 游标使用示例

    在"游标.txt"文件中,可能包含了更多关于Oracle游标的使用实例和技巧,包括游标的声明、动态游标、游标变量、游标表达式以及游标在存储过程和函数中的应用。这些内容可以帮助你更深入地理解和掌握Oracle游标,提高你...

    游标最简单教程

    2. **打开游标**:使游标准备好读取数据。 3. **从游标中获取数据**:通常使用`FETCH`命令来获取当前行的数据。 4. **循环处理数据**:使用循环结构来依次处理每一行数据。 5. **关闭游标**:释放与游标相关的资源。...

    SQL游标原理和使用方法

    2. 打开游标:创建游标后,必须使用OPEN语句打开它,这样才能开始访问结果集。 3. 获取数据:通过FETCH语句,你可以从游标中提取一行数据,并将其存储到变量中。 4. 移动游标:根据需求,可以使用不同的移动命令,...

    游标卡尺的使用.ppt

    游标卡尺的使用规则主要包括两个方面:一是测量的准备工作,二是实际测量的过程。在测量前,需要确保游标卡尺的准确性和清洁度,然后选择合适的测量方式和单位。在实际测量过程中,需要将游标卡尺与被测量的物体对齐...

Global site tag (gtag.js) - Google Analytics