zoukankan      html  css  js  c++  java
  • [跟着hsp步步学习系统]oracle培训学习集锦全360度扫描(6)自适应变量,记录型类型,游标

    第三十六讲
    为了让v_ename类型,更灵活,我们来用%type来自适应 如
    v_ename emp.ename%type;
    v_sal emp.sal%type;
    此法,是与表的列相一同
    2.复合变量,可以存多个变量,如同结构体
    也叫:pl/sql记录。其语法是:
    type 名 is record(
    变量 变量的类型,
    变量 变量的类型
    );
    快速入门
    create or replace procedure pro1(v_in_empno in number)
    is
    --定义一个记录数据类型
    type hsp_emp_record is record(
    v_ename emp.ename%type;
    v_sal emp.sal%type,
    v_job emp.job%type
    );
    --定义一个变量,此变量类型是hsp_emp_record
    v_emp_record hsp_emp_record;


    begin
    select ename,sal,job into v_emp_reord form emp where empno=empno;
    dbms_output.put_line('名字'||v_emp_record.v_anme||'工资'||v.emp_record.v_sal);
    end;--访问时,如同类与对象的样子
    3.复合类型pl/sql表
    如同java的数组,不过其下标是可变的。不是很重要
    语法是
    type 名 数据类型 is table of emp.sql%type index by binary_integer;
    定义一个这样的变量
    变量名 数据类型
    4.参照变量
    较重要,游标变量:通过游标可以取得返加结果的任何一行数据,可以提供共享的。


    a定义游标
    b打开游标
    c取当前游标批向的行 fetch 游标变量 into 其他变量
    d是否在末行
    案例:
    create or replace procedure pro1(v_in_deptno number)
    is
    --先定义一个游标变量类型
    type hsp_emp_cursor is ref cursor;
    --定义一个游标变量
    v_emp_cursor hsp_emp_sursor;
    v_ename emp.enme%type;
    v_sal emp.sal%type;
    begin
    --打开一个游标
    open v_emp_cursor for select ename,sal form emp;
    --取此游标指向的每行数据
    loop
    --此语句会让游标向下走
    fetch v_emp_cursor into v_ename,v_sal;
    --看当前游标是否到最后
    exit when v_emp_cursor%notfound;
    --输出
    dbms_output.out_line('用户名:'||v_ename)
    end loop;
    --关闭游标
    close v_emp_cursor;
    end;
    若薪水低于二百元,则再加一百元的修改
    create or replace procedure pro1(v_in_deptno number)
    is
    --先定义一个游标变量类型
    type hsp_emp_cursor is ref cursor;
    --定义一个游标变量
    v_emp_cursor hsp_emp_sursor;
    v_ename emp.enme%type;
    v_sal emp.sal%type;
    v_empno emp.empno%type;
    begin
    --打开一个游标
    open v_emp_cursor for select ename,sal,v_empno rorm emp;
    --取此游标指向的每行数据
    loop
    --此语句会让游标向下走
    fetch v_emp_cursor into v_ename,v_sal,v_empno;
    --看当前游标是否到最后
    exit when v_emp_cursor%notfound;


    if v_sal<200 then
    update emp set sal=sal+100 where empno=v_empno;
    end if;


    end loop;
    --关闭游标
    close v_emp_cursor;
    end;

  • 相关阅读:
    Tornado session 插件 pycket 定制时间和时间续租
    为Tornado框架加上基于Redis或Memcached的session 【第三方】
    正则表达式大全 --【Python举例】
    Django 最好的缓存memcached的使用 小记
    Django 1.9 admin 使用suit 小记
    IntelliJ IDEA 注册码
    Python 爬虫抓取代理IP,并检测联通性
    MySQL自定义函数
    css补充知识
    sqlalchemy 知识补充
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3007508.html
Copyright © 2011-2022 走看看