zoukankan      html  css  js  c++  java
  • Oracle特殊数据类型

    1.1PL/SQL变量、常量和数据类型

    1.1.1定义变量

    1.定义变量
    运行过程中可以改变数据存储结构。
    
    <变量名><数据类型>[<长度>:=<初始值>];
    
    var_countryname varchar2(50):="中国";
    
    2.定义常量
    常量指定值在运行过程中不可改变的数据存储结构。比如一些防止被修改的数值,列如圆周率,光速等。最好定义常量
    
    <常量名> constant <数据类型>:=<常量值>;
    
    --定义常量存储一年的天数
    on_day constant integer:=354;

    1.1.2基本数据类型

    PL/SQL基本数据类型
    
    1.数值类型
        数值类型包括NUMBER、PLS_INTEGER和BINARY_INTEGER三种基本类型。其中,NUMBER类型存储整数或浮点数;PLS_INTEGER和BINARY_INTEGER只适合存储整数。NUMBER可以通过NUMBER(P,S)格式化数字。P表示精度,S表示范围。
        基于其他编程语言数据类型兼容。提出了子类型概念。NUMBER类型子类型DEC    DECIMAL    DOUBLE    INTEGER    INT    NUMERIC    SMALLINT    BINARY_INTEGER    PLS_INTEGER
    
    2.字符类型
        字符类型主要包括VARCHAR2、CHARLONGNCHAR、NVARCHAR2等。
    1):VARCHAR2(MAXLENGTH)
        参数maxlength可以存储字符串最大长度。最大为32767字节
    ※:数据库类型VARCHAR2最大长度4000字节。所以最大长度4000字节PL/SQL类型的VARCHAR2变量是不可以赋值给数据库VARCHAR2变量的,只能赋值给LONG类型数据库变量。
    2):CHAR
        最大字节32767字节。CHAR类型的默认长度为1.
    ※:数据库中CHAR只有2000字节,所以PLSQL变量长度大于2000个字节,则不能赋值给数据库的CHAR。
    3):LONG
        LONG表示一个可变的字符串,数据库类型最大长度达到2GB。几乎所有字符变量都可以。
    4):NCHAR和NVARCHAR2类型
        NCHAR和NVARCHAR2类型是PLSQL8.0之后加入的类型,她的长度要根据字符集来确定。
    
    3.日期类型
        只有一种DATE类型,存储日期和时间信息,DATE类型的存储空间7字节。分别1字节存储世纪、年、月、天、小时、分钟、秒。
    
    4.布尔类型
        只有一种BOOLEAN类型,主要做程序判断,变量值可以为TRUE FALSE或NULL。

    1.1.3特殊类型

    1%type类型
        使用%TYPE类型声明一个指定列名相同的数据类型,他通常紧跟着指定列名的后面。
    声明一个EMP表JOB列相同数据类型变量
    DECLARE
        VAR_JOB_EMP EMP.JOB%TYPE;
        
    列:
    DECLARE
        VAR_ENAME EMP.ENAME%TYPE;
        VAR_JOB EMP.JOB%TYPE;
    BEGIN
        SELECT ENAME,JOB INTO  VAR_ENAME,VAR_JOB FROM EMP WHERE EMPNO=7369;
        DBMS_OUTPUT.PUT_LINE( VAR_ENAME||"的"||VAR_JOB);
    END;
    /
    2.RECORD类型
        记录之意。RECORD类型存储多个行列组成的数据。
    列:
    DECLARE
        TYPE EMP_TYPE IS RECORD(
            VAR_ENAME VARCHAR2(20),
            VAR_JOB VARCHAR2(20),
            VAR_SQL NUMBER
        );
        EMOINFO EMP_TYPE;
    BEGIN
        SELECT ENAME,JOB,SAL INFO EMPINFO FROM EMP WHERE EMPNO=7369;
        DBMS_OUTPUT.PUT_LINE(EMPINFO.VAR_ENAME);
    END;
    /
    3.%ROWTYPE类型
        %ROWTYPE类型变量结合了"%TYPE类型"和"RECORD类型"变量的优点。根据数据表中行的结构定义一种特殊的数据类型,用来存储数据表中检索到的一行数据。
    
    列:
    DECLARE
        ROWVAR_EMP EMP%ROWTYPE;
    BEGIN
        SELECT * INTO ROWVAR_EMP FROM EMP WHERE EMPNO=7369;
        DBMS_OUTPUT_PUT_LINE(ROWVAR_EMP.ENAME);
    END;
    /

    1.2PL/SQL基本程序结构语句

    if...then:判断正确则执行then
    if...then...else:判断if正确则执行then,否则执行else
    if...then...elseif:嵌套式判断
    case:有逻辑从数值中选出
    loop...exit...end:循环控制,利用判断语句执行exit
    loop...exit when...end:同上,当when为真执行exit
    while...loop..end:当while为真循环
    for..in...loop...end:已知循环次数的循环
    GOTO:无条件转向控制

    1.2.1PL/SQL程序块

    DECLARE    --声明部分
    BEGIN         --执行部分
    [EXCEPTION]         --异常处理部分
    END;    
    
    异常处理部分:
    DECLARE
        A INT:=100;
        B INT:=200;
        C NUMBER;
    BEGIN
        C:=(A+B)/(A-B);
        DBMS_OUTPUT.PUT_LINE(C);
    EXCEPTION
        WHEN ZERO_DIVIDE THEN
        DBMS_OUTPUT.PUT_LINE("除数不可以为零");
    END;
    /
  • 相关阅读:
    删除datatable的重复行
    导出大Excel
    winform调用plugin
    System.AppDomain.CurrentDomain.BaseDirectory总是取得根目录
    能不能多想一点呢?
    执行语句使用exec (sql)
    open the folder
    取得一个表的所有字段
    快讯:麦考林第四季度净利110万美元同比减62%
    麦考林第四季度净利110万美元同比减62%(图解)
  • 原文地址:https://www.cnblogs.com/Jonecmnn/p/6425065.html
Copyright © 2011-2022 走看看