zoukankan      html  css  js  c++  java
  • Oracle 存储过程2: PL/SQL数据类型

    一.标量数据类型

    标量数据类型的变量只有一个值,且内部没有分量。标量数据类型包括数字型,字符型,日期型和布尔型。这些类型有的是 Oracle SQL 中有的数据类型,有的是 PL/SQL 自身附加的数据类型。下面我们来详细介绍一下常用的的标量数据类型:

    1、数值类型:主要用来存储数值类型的数据。常用的有NUMBER、PLS_INTEGER、BINARY_INTEGER和SIMPLE_INTEGER类型。

    NUMBER:可以存储小数和整数类型数据,格式为NUMBER(p,s),其中p表示的是精度(既是位数的长度),s表示的是小数点后的位数。例如:number(3,2)表示的范围-9.99—9.99。

    PLS_INTEGER、BINARY_INTEGER、SIMPLE_INTEGER:主要用来存储整数类型,它们存储整数的范围都是-(2^31)...(2^31-1)。但是BINARY_INTEGER发生内存溢出的时候会给它分配一个number类型的数据,而PLS_INTEGER会直接抛异常报错SIMPLE_INTEGER是PLS_INTEGER的一个子类型,它不允许存在NULL值数据

    2、字符类型:用来存储单个字符或字符串。主要有的类型有如下类型:

    CHAR类型:固定长度的字符串,CHAR(n):默认长度是1,当字符串长度小于n时,会自动右补空格,所以在取数据的时候要注意补空格。

    VARCHAR2类型:该类型存储可变长度的字符串VARCHAR2(n),最大存储的长度为4000个字节。当字符串长度小于n时,不会补齐空格

    LONG类型:该类型存储可变长度的字符串,不同于VARCAHR2类型,它对于字段的存储长度可达2G,但是作为PL/SQL变量,和VARCHAR2一样,只能存储最大32767字节

    3、时间类型:主要和SQL中的时间类型一致,有DATE和TIMESTAMP两种时间类型。

    4、布尔类型:PL/SQL程序中的逻辑判断的值有:TRUE、FALSE、NULL值。

    二.引用数据类型

    引用数据类型是PL/SQL程序语言特有的数据类型,是用来引用数据库当中的某一行或者某个字段作为数据类型的声明。其中有两种引用类型:%TYPE和%ROWTYPE

    1.%TYPE类型:

    引用数据库中表的某列的类型作为某变量的数据类型,也可以直接引用PL/SQL程序中某个变量作为新变量的数据类型。下面我们通过一个案例做下测试:

    declare

    ls_stuname stuinfo.stuname%type;--通过学生姓名字段声明ls_stuname
    begin
      select t.stuname into ls_stuname
        from student.stuinfo t
       where t.stuid = 'SC201801006';   
      dbms_output.put_line(ls_stuname);
    exception
      when no_data_found  then
         dbms_output.put_line('该学生在学生信息表中找不到');
    end;
     
    2.% ROWTYPE 类型:
    %ROWTYPE类型是PL/SQL程序引用数据库表中的一行作为数据类型,即 RECORD 类型(记录类型)表示一条数据记录。类似java程序当中的对象的实例。可以使用“.”来访问记录中的属性。下面我们通过实例来做下测试:
    declare
    ls_stuinfo stuinfo%rowtype;
    xsjbxx varchar2(50);
    begin
      select t.* into ls_stuinfo
        from stuinfo t
       where t.stuid='SC201801006';
       xsjbxx:='姓名:' ||ls_stuinfo.stuname || ' 学号:' ||ls_stuinfo.stuid || ' 年龄:' ||ls_stuinfo.age;
      dbms_output.put_line(xsjbxx);
    exception
      when no_data_found  then
         dbms_output.put_line('该学生在学生信息表中找不到');
    end;
     
  • 相关阅读:
    oracle 例外
    Help with Intervals(集合的交并补,线段树)
    Mex(线段树的巧妙应用)
    hdu4578Transformation(线段树多个lz标记)
    Coder(线段树)
    Ice-cream Tycoon9(线段树)
    Partition(线段树的离线处理)
    ACM学习大纲(转)
    Codeforces Round #250 (Div. 1)
    记次浙大月赛 134
  • 原文地址:https://www.cnblogs.com/hadas/p/13973395.html
Copyright © 2011-2022 走看看