定义并使用变量

来源:互联网 发布:人丑还颜控 知乎 编辑:程序博客网 时间:2024/05/21 06:44
  1. 定义并使用变量

    在编写PL/SQL程序时,可以使用标量类型、符合类型、参照类型和LOB类型等四种类型。

     

  1. 常用标量类型

  1. VARCHAR2(n) 其数值的长度不应该超过4000字节

  2. CHAR(N) 其数值的长度不应该超过2000字节

  3. NUMBER(P,S)

  4. DATE 其数据长度为固定长度(7字节)

  5. TIMESTAMP 当显示TIMESTAMP变量数据时,不仅会显示日期,而且还会显示时间和上下午标记

  6. LONGLONGRAW LONG数据类型用于定义变长字符串,其字符串的最大长度为32760字节;LONG RAW数据类型用于定义变长的二进制数据,其数据最大长度为32760字节。

  7. BOOLEAN 该数据类型是PL/SQL数据类型,表列不能采用该数据类型

  8. BINARY_INTEGER该数据类型是PL/SQL数据类型,表列不能采用该数据类型

  9. BINARY_FLOATBINARYDOUBLE

  10.  NVARCHAR2(n)

VARCHAR2(n)NVARCHAR2(n)的区别:

NVARCHAR2 一个中文字当一个字符来处理

VARCHAR2  一个中文字当两个字符来处理。

  

  1. 定义标量变量

  v_enamevarchar2(10);

  v_sal number(6,2);

  v_sal2 number(6,2):=5.4;

 

  1. 使用%type属性

  declare

   v_enameemp.ename%type;

begin

end;

 

  1. 复合变量

  1. PL/SQL记录

  2. PL/SQL

  3. 嵌套表

  4. VARRAY

 

  1. PL/SQL记录类似于高级语言中的结构体

    declare

    type emp_record_typeisrecord(empname emp.name%type , sal emp.sal%type , title emp.job%type);

    --定义一个sp_record变量,这个变量类型是emp_record_type

    sp_recordemp_record_type;

    begin

             select ename,sal,jobinto sp_recordfrom empwhere empno=7788;

             dbms_output.put_line('员工名:'||sp_record.empname);

    end;

     

  2. PL/SQL表相当于高级语言中的数组。但PL/SQL中下表可以为负数,并且表元素的下表没有限制。

    declare

    type sp_table_typeistableof emp.ename%typeindexbybinary_integer;--下标是整数

    sp_tablesp_table_type;

    begin

            select enameinto sp_table(0)from empwhere empno=7788;

            cbms_output.put_line('员工名:'||sp_table(0));

    end;

     

  1. 参照变量

  1. 游标变量 REF CURSOR

  2. 对象类型变量 REF obj_type

     

  1. REF CURSOR

    declare

    --定义游标类型

    type sp_emp_cursorisrefcursor;

    --定义一个游标变量

    test_cursorsp_emp_cursor;

    v_enameemp.ename%type;

    v_salemp.sal%type;

    begin

         --test_cursor和一个select结合

         open test_cursorforselect ename,salfrom empwhere deptno=&no;

         --循环取出

         loop

              fetch test_cursorinto v_ename,v_sal;

              --判断test_cursor是否为空

              exitwhen test_cursor%notfound;

              dbms_output.put_line('名字:'||v_ename ||'工资:'||v_sal);

         endloop;

    end;

     

  1. LOB变量

LOB变量是指用于存储大批量数据的变量。OracleLOB分为两种:内部LOB和外部LOB。内部LOB包括CLOBBLOBNCLOB三种类型,它们的数值被存储在数据库中,并且支持事务操作(提交,回退,保存点)。

外部LOB只有BFILE一种类型,该类型的数据被存储在OS文件中,并且不支持事务操作。

CLOB/NCLOB用于存储大批量字符数据,BLOB用于存储大批量二进制数据,而BFILE则存储指向OS文件的指针。

0 0
原创粉丝点击