zoukankan      html  css  js  c++  java
  • oracle 9i从入门到精通读书笔记2

    第二章:PL/SQL基础 

    2.1 PL/SQL程序结构 

    2.1.1 PL/SQL块的类型 

    所有的PL/SQL程序都是以块作为基本单位,以及都是由块组成的。 

    这些块可以是按顺序出现的,也可以是嵌套的 

    块可以根据其带名称和不带名称以及在数据库中的存储方式分为以下类型: 

    匿名块:只能执行一次,不能存储在数据库中 

    带名块:一种带标签的匿名块 

    子程序:可以存储在数据库中的过程,函数和包,可以多次执行,可以在外部的程序中显示调用 

    触发器:存储在数据库中的带名块,当相应的触发事件发生时触发器就被自动执行,触发器事件一般是针对特定的数据库表进行的DML语句,如INSERT,UPDATE,DELTE 

    <<I_Namedblock>> 

    DECLARE 

    v_num1 NUMBER := 1; 

    v_num2 NUMBER := 2; 

    v_str1 VARCHAR2 (30) := '你好!'; 

    v_str2 VARCHAR2 (30) := '这是你第一次接触PL/SQL'; 

    v_outputstr VARCHAR2 (30); 

    BEGIN 

    INSERT INTO test_table(ncolumn, vcolumn)VALUES (v_num1, v_str1); 

    INSERT INTO test_table(ncolumn, vcolumn)VALUES (v_num2, v_str2); 

    SELECT vcolumn INTO v_outputstr FROM test_table WHERE ncolumn = v_num1; 

    DBMS_OUTPUT.put_line (v_outputstr); 

    SELECT vcolumn INTO v_outputstr FROM test_table WHERE ncolumn = v_num2; 

    DBMS_OUTPUT.put_line (v_outputstr); 

    END I_Namedblock; 

    带名块就是在匿名块前面加上一个标签 

    把DECLARE关键字 变成 CREATE OR REPLACE PROCEDURE 就变成了存储过程 

    CREATE OR REPLACE PROCEDURE 过程名 IS 

    2.1.2 PL/SQL块的结构 

    所有块都包含3个部分:声明部分,执行部分,异常处理部分 

    DECLARE 

    v_ncolumn NUMBER :=6; 

    v_vcolumn VARCHAR2(30); 

    BEGIN 

    SELECT v_column INTO v_vcolumn FROM test_table WHERE ncolumn=v_ncolumn; 

    EXCEPTION 

    WHEN NO_DATA_FOUND THEN 

    DBMS_OUTPUT.PUT_LINE('没有找到匹配的数据'); 

    END; 

    在过程和函数中声明变量是不需要DECLARE的,但在声明TRIGGER中的变量是必须要有DECLARE 

    如果块中不需要声明变量,类型和游标时,声明部分可以省略 

    执行部分是不可缺少的,一般以BEGIN开始 END结束。END关键字必须是分号结束的 

    2.1.3 词法单位 

    e代表乘以10的多少次幂 

    2.2 变量声明 

    Variable_name [CONSTANT] type [NOT NULL][:=value | DEAFULT value] 

    Variable_name是变量名 

    CONSTANT 声明的是一个常量 

    Type 是类型 

    NOT NULL 可选,表示不能为空 

    :=value | DEAFULT value表示赋值 

    缺省的变量会被初始化为NULL 

    不能把NULL付给一个定义为NOT NULL的变量acct_id INTEGER(5) NOT NULL;这样是不允许的 

    在NATURAL和POSITIVEN,他们被预先定义为NOT NULL 

    每行只能声明一个变量,这和其他语言不同 

    BEGIN END;是可以嵌套的 

    2.3 变量类型 

    4中标量类型(数字类型,布尔型,字符型,日期型) 

    复合型 

    引用型 

    LOB型 

    数字型的三种基本类型:BINARY_INTEGER,NUMBER,PLS_INTEGER 

    字符型:CHAR,VARCHAR2,LONG和LONG RAW,RAW,ROWID和UROWID 

    LOB类型:BFILE,BLOB,CLOB,NCLOB 

    布尔类型:BOOLEAN(TRUE,FALSE,NULL) 

    日期时间类型:DATE,TIMESTAMP,TIMESTAMP WITH TIME ZONE,TIMESTAMP WITH LOCAL TIME ZONE,INTERVAL YEAR TO MONTH,INTERVAL DAY TO SENCOND 

    复合类型:记录,表,数组 

    引用类型:REF CURSOR 和ref object_type 

    用户自定义类型 

    2.4 数据类型转换 

    显式转换,可以使用内置函数 

    隐式转换,隐式转换不是好的习惯,可能会影响效率,结果可能不可预料 

    2.5 表达式 

    表达式是由操作符和运算符的结合 

    CASE 表达式 

    CASE SELECTOR 

    WHEN express THEN result1 

    WHEN express THEN result3 

    WHEN express THEN result2 

    END;

  • 相关阅读:
    matplotlib种类
    matplotlib安装
    Python input保证输入为int类型
    centos7 安装 smplayer
    matplotlib与numpy
    Windows系统pip安装whl包
    python3打开winodows文件问题
    centos7 python3 pip
    Python实战171203统计
    Python实战171202元组访问
  • 原文地址:https://www.cnblogs.com/myfreefield/p/2004392.html
Copyright © 2011-2022 走看看