Oracle游标创建和使用的语法和举例(显示和隐式游标)
2017-05-06 11:14
405 查看
游标
注意:与sql的游标定义不同,Oracle游标可以带输入变量和输出类型
使用游标的时候,可以输入参数,也可以不输入
游标可用使用的几个属性
显式游标的例子
执行结果
隐式游标
注意:在一个PL/SQL块中出现多个SQL语句,隐式游标的属性值只反映出紧挨着它上面那条SQL的处理结果
执行结果:
for循环语句与游标
通过for语句循环游标,显示游标上面已经举例,下面举例隐式游标。
注意此时自动计数器不是整型,而是record类型的变量
执行结果:
博文仅供参考,欢迎大家来访。如有错误之处,希望批评指正。
注意:与sql的游标定义不同,Oracle游标可以带输入变量和输出类型
使用游标的时候,可以输入参数,也可以不输入
declear cursor 游标名[(变量名 [in] 类型[:=缺省])] [return ret_type] is select query; 其他变量定义; begin open 游标名(参数);--/open 游标名;/open 游标名(); fetch 游标名 into 变量; while 游标名%found loop sentence; fetch 游标名 into 变量; end loop; close 游标名 end
游标可用使用的几个属性
%found是否获取到数据 %notfound是否没有数据 %rowcount受SQL影响的行数 %isopen游标是否打开状态
显式游标的例子
--使用游标获取岗位为employees的姓名+电话+工资 set serveroutput on; declare cursor my_cursor(var_job varchar2:='ST_MAN') is select first_name,phone_number,salary from employees where job_id=var_job and rownum <=3; type my_record is record (var_1 employees.first_name%type, var_2 employees.phone_number%type, var_3 employees.salary%type ); var_myrecord my_record; begin dbms_output.put_line('下面演示使用while语句遍历显示游标,不输入参数'); open my_cursor;--没有输入参数,取缺省 fetch my_cursor into var_myrecord; while my_cursor%found loop --使用游标属性 dbms_output.put_line('员工'||var_myrecord.var_1||'的联系方式为:'||var_myrecord.var_2||',当前工资为:'||var_myrecord.var_3||'。'); fetch my_cursor into var_myrecord; end loop; close my_cursor;--不需要输入变量 dbms_output.put_line('下面演示使用while语句遍历显示游标,输入参数'); open my_cursor('ST_CLERK');--输入参数 fetch my_cursor into var_myrecord; while my_cursor%found loop --使用游标属性 dbms_output.put_line('员工'||var_myrecord.var_1||'的联系方式为:'||var_myrecord.var_2||',当前工资为:'||var_myrecord.var_3||'。'); fetch my_cursor into var_myrecord; end loop; close my_cursor;--不需要输入变量 --使用for语句遍历显示游标 dbms_output.put_line('下面演示使用for语句遍历显示游标,不输入参数'); for var_myrecord2 in my_cursor() loop dbms_output.put_line('员工'||var_myrecord2.first_name||'的联系方式为:'||var_myrecord2.phone_number||',当前工资为:'||var_myrecord2.salary||'。'); end loop; dbms_output.put_line('下面演示使用for语句遍历显示游标,输入参数'); for var_myrecord2 in my_cursor('ST_CLERK') loop dbms_output.put_line('员工'||var_myrecord2.first_name||'的联系方式为:'||var_myrecord2.phone_number||',当前工资为:'||var_myrecord2.salary||'。'); end loop; end;
执行结果
下面演示使用while语句遍历显示游标,不输入参数 员工Matthew的联系方式为:650.123.1234,当前工资为:8000。 员工Adam的联系方式为:650.123.2234,当前工资为:8200。 员工Payam的联系方式为:650.123.3234,当前工资为:7900。 下面演示使用while语句遍历显示游标,输入参数 员工Julia的联系方式为:650.124.1214,当前工资为:3200。 员工Irene的联系方式为:650.124.1224,当前工资为:2700。 员工James的联系方式为:650.124.1334,当前工资为:2400。 下面演示使用for语句遍历显示游标,不输入参数 员工Matthew的联系方式为:650.123.1234,当前工资为:8000。 员工Adam的联系方式为:650.123.2234,当前工资为:8200。 员工Payam的联系方式为:650.123.3234,当前工资为:7900。 下面演示使用for语句遍历显示游标,输入参数 员工Julia的联系方式为:650.124.1214,当前工资为:3200。 员工Irene的联系方式为:650.124.1224,当前工资为:2700。 员工James的联系方式为:650.124.1334,当前工资为:2400。
隐式游标
注意:在一个PL/SQL块中出现多个SQL语句,隐式游标的属性值只反映出紧挨着它上面那条SQL的处理结果
set serveroutput on begin update employees set salary=salary+100 where job_id='AD_VP'; if sql%notfound then dbms_output.put_line(''); else dbms_output.put_line(sql%rowcount||'个员工调整了工资'); end if; end;
执行结果:
匿名块已完成 2个员工调整了工资
for循环语句与游标
通过for语句循环游标,显示游标上面已经举例,下面举例隐式游标。
注意此时自动计数器不是整型,而是record类型的变量
set serveroutput on begin for var_my_record in ( select first_name,phone_number,salary from employees where job_id='AD_VP' and rownum <=3) loop dbms_output.put_line('员工'||var_my_record.first_name||'的联系方式为:'||var_my_record.phone_number||',当前工资为:'||var_my_record.salary||'。'); end loop; end;
执行结果:
匿名块已完成 员工Neena的联系方式为:515.123.4568,当前工资为:17200。 员工Lex的联系方式为:515.123.4569,当前工资为:17200。
博文仅供参考,欢迎大家来访。如有错误之处,希望批评指正。
相关文章推荐
- oracle 隐式游标,显示游标,游标循环,动态SELECT语句和动态游标,异常处理,自定义异常,
- Oracle中显示游标、隐式游标、循环游标、动态游标的区别和应用
- oracle 隐式游标,显示游标,游标循环,动态SELECT语句和动态游标,异常处理,自定义异常【转载】
- Oracle 游标 隐式游标,显示游标,游标循环,动态SELECT语句和动态游标,异常处理,自定义异常
- oracle 隐式游标,显示游标,游标循环,动态SELECT语句和动态游标,异常处理,自定义异常
- Oracle游标的创建与使用
- oracle 隐式游标,显示游标,游标循环,动态SELECT语句和动态游标,异常处理,自定义异常【转载】
- oracle隐式游标和显示游标
- oracle 隐式游标,显示游标,游标循环,动态SELECT语句和动态游标,异常处理,自定义异常,
- Oracle中游标的创建和使用
- oracle 隐式游标,显示游标,游标循环,动态SELECT语句和动态游标,异常处理,自定义异常【转载】
- ORACLE显示游标和隐式游标的区别
- oracle 隐式游标,显示游标,游标循环,动态SELECT语句和动态游标,异常处理,自定义异常
- oracle 隐式游标,显示游标,游标循环,动态SELECT语句和动态游标,异常处理,自定义异常,
- Oracle游标使用方法及语法大全
- oracle 隐式游标,显示游标,游标循环,动态SELECT语句和动态游标,异常处理,自定义异常,
- [Oracle整理]Oracle游标(显示游标&隐式游标&动态游标&参数游标)
- Oracle--plsql游标创建和使用
- 2.非关系型数据库(Nosql)之mongodb:mongodb显示所有数据库,使用数据库,集合创建(显示和隐式创建),集合查询,初步数据的增删改查,分页
- Oracle PL/SQL 使用隐式游标