ORACLE-变量和类型

  • 使用% TYPE
    使用PL/SQL的%TYPE,使得开发人员可以基于已有的变量类型,或者是数据库列的类型来指定变量的类型,示例如下:

    DECLARE
      v_empno     emp.empno%TYPE; -- 使用%TYPE定义emp表empno列类型的变量
      v_empno     v_empno%TYPE; -- 定义与v_empno相同的变量
      v_salary      NUMBER(7, 3) NOT NULL := 1350.5; -- 定义薪水变量
      v_othersalary  v_salary%TYPE := 1500; -- 定义与v_salary相同类型的变量
    BEGIN
      NULL;
    END
    

    注:对于数据库列类型,%TYPE只提供类型信息,并不提供NOT NULL约束信息。

  • 使用%ROWTYPE
    %ROWTYPE是与%TYPE相似的用于绑定到数据库表列的类型,%TYPE仅绑定到单个数据库列的类型,而%ROWTYPE则绑定到一整行的所有列类型,可以将使用%ROWTYPE定义的变量看作是一条记录类型,示例如下:

    DECLARE
      v_emp  emp%ROWTYPE; -- 定义emp表列类型的记录
      v_emp2 emp%ROWTYPE;
    BEGIN
      -- 查询emp表并将结果写入v_emp记录中
      SELECT * INTO v_emp FROM emp where empno = &empno;
      -- 输出结果信息
      DBMS_OUTPUT.PUT_LINE(v_emp.empno || CHR(10) || v_emp.ename);
      -- 为记录类型赋值
      v_emp2.empno    := 8000;
      v_emp2.ename    := '张三';
      v_emp2.job      := '经理';
      v_emp2.mgr      := 7902;
      v_emp2.hiredate := date '2021-09-01';
      v_emp2.sal      := 8000;
      v_emp2.deptno   := 20;
      -- 将记录类型插入数据表
      INSERT INTO emp VALUES v_emp2;
    END
    

    注:%ROWTYPE同%TYPE一样,只提供类型信息,并不能保证NOT NULL约束。

    除了使用%ROWTYPE定义表列类型的变量外,还可以用来定义游标类型的变量,使用%ROWTYPE指定游标类型的变量,变量的值将是游标的SELECT语句查询出来的值,例如如下代码定义了游标emp_cursor,使用%ROWTYPE指定emp_cursor类型的变量:

    DECLARE
      CURSOR emp_cursor IS
        SELECT empno, ename, job, sal, hiredate FROM emp; --定义游标类型
      v_emp emp_cursor%ROWTYPE; -- 使用%ROWTYPE定义游标类型的变量
    BEGIN
      OPEN emp_cursor;
      -- 循环并提取游标数据
      LOOP
        FETCH emp_cursor
          INTO v_emp;
        -- 要注意游标移动到最尾部退出游标
        EXIT WHEN emp_cursor%NOTFOUND;
        -- 输出游标数据
        DBMS_OUTPUT.PUT_LINE(v_emp.empno || ' ' || v_emp.ename || ' ' ||
                             v_emp.job || ' ' || v_emp.sql || ' ' ||
                             TO_CHAR(v_emp.hiredate, 'YYYY-MM-DD'));
      END LOOP;
      -- 关闭游标
      CLOSE emp_cursor;
    END
    
  • 数据类型
    PL/SQL提供多种数据类型,这些类型可以分为如下四大类:
     标量类型:用来保存单个值的数据类型,包含字符型、数字型、布尔型和日期型。
     复合类型:复合类型是具有内部子组件的类型,可以包含多个标量类型作为其属性。复合类型包含记录、嵌套表、索引表和变长数组。
     引用类型:引用类型是一个指向不同存储位置的指针,引用类型包含REF CURSOR和REF这两种。
     LOB类型:LOB类型又称大对象类型,用来处理二进制和大于4GB的字符串。

  • 运算符类型
    在PL/SQL中,运算符可以分为如下四大类:
     赋值运算符:用来为变量或常量赋值。
     连接运算符:用来追加一个字符串操作数到另一个字符串操作数。
     逻辑运算符:包含AND、OR和NOT,允许进行逻辑操作处理。
     比较运算符:用来比较两个表达式或操作数的异同,返回值为TRUE、FALSE或NULL,如果一个表达式的值为NULL,那么整个结果都为NULL。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值