Oracle学习笔记(2) PLSQL编程基础

 

复制代码


  1. select * from Employee;
    select * from dba_tab_cols t where t.table_name='EMPLOYEE';

复制代码


  1. -- 声明部分,用于定义变量
    declare

constant用于定义常量,当定义常量时必须指定它的初始值,且数据不能改变。

复制代码


  1. n_aaa constant number(4,2) :=5.5;

boolean 类型的值只能用于sqlplus语句块中,不能用在表字段的数据类型中
not null 用于强制初始化变量不能为空,此时必须为变量指定值
default用于指定变量或常量的默认值

复制代码


  1. v_valid boolean not null default false;
    v_name varchar2(20);

为了确保变量使用合适的数据类型和长度,可以使用%type属性定义变量,它会按照数据库列
或其它变量来确定新变量的类型和长度

复制代码


  1. v_job Employee.Job%type;

将v_job2定义为与变量v_job的数据类型和长度完全一致

复制代码


  1. v_job2 v_job%type;

复合变量
处理单行单列数据时,用标量变量;处理单行多列时,用PL/SQL记录;处理单列多行时,
用集合;处理多行多列数据时,可以结合使用PL/SQL记录和集合
PL/SQL记录(RECORD):
       方法一:
       emp_recode_type 是PL/SQL记录类型并包含有三个成员(name,salary,job)

复制代码


  1. type emp_recode_type is record(
                name employee.name%type,
                salary employee.salary%type,
                job employee.job%type
    );

emp_recode是记录变量

复制代码


  1. emp_recode emp_recode_type;

方法二:
       使用表名的%rowtype 属性定义记录变量
       注意:用%rowtype 属性定义记录变量时,记录成员个数、名称、类型必须与
       表或视图的列的个数、名称和类型完全相同

复制代码


  1. emp_recode2 employee%rowtype;

集合类型
       PL/SQL 表(也称索引表,下标可以为负数,下标没有上限和下限,并且元素的个数无限)

复制代码


  1. --这里的table 实指集合
    type name_table_type is table of employee.name%type index by binary_integer;
           name_table name_table_type;

嵌套表:      
     嵌套表的下标不能为负值,其元素的个数没有限制并可以使用表列的数据类型
      在使用嵌套表时必须先用create type 语句建立嵌套表类型
      嵌套表只是比PL/SQL 表少了 index by binary_integer

复制代码


  1. type num_table_type is table of number(4);
    num_table num_table_type;

varray(变长数组):
        varray的元素个数是有限制的,在使用其之前必须先建立varray类型
         在此创建的varray只能存放20个varchar2类型的数据
         注意:嵌套表列数据需要存储在专门的存储表中,而varray数据则与
         其它列数据一起存放在表字段中

复制代码


  1. type v_varray_type is varray(20) of varchar2(10);
    n_empno employee.empno%type;

复制代码


  1. -- 程序开始
    begin

执行部分,执行PL/SQL/和SQL语句
可以用into将从表人查询出来的值赋给指定的变量
将值赋给变量有两种方法,一是用 := ,二是用 into
& 符号用于提示用户输入一个值,& 为sqlplus的替代变量

复制代码


  1. n_empno := &输入你要查询的员工编号:;
    select Name,Job into v_name,v_job from Employee where empno=n_empno;

这里的 || 号与Java中的 + 号类似,表示要将两边的字符串连接起来
dbms_output是Oracle所提供的系统包,用于输出数据或消息,
而put_line是该包所包含的过程,用于输出字符串信息并换行
当在CMD中使用dbms_output包时,必须要先将sqlplus 的环境变量
serveroutput 设置为 on

复制代码


  1. dbms_output.put_line('你查询的员工是:' || v_name || '  他的工作是:' || v_job);

引用记录变量的成员并赋值(赋值可以用 := 和 into 两种方法)
注意:用select……into 语句给记录变量赋值时,select语句中的列名列表的名称和个数、
类型必须与记录变量的成员个数、名称、类型完全相同

复制代码


  1. dbms_output.put_line('你查询的员工是:' || v_name || '  他的工作是:' || v_job);
    emp_recode.name := '钱森';
           dbms_output.put_line('引用记录变量的成员并赋值(Recode):' || emp_recode.name);
           select name,job into emp_recode2.name,emp_recode2.job from employee where empno=2;
           dbms_output.put_line('引用记录变量的成员并赋值(RowType):' || emp_recode2.name || ' 的工作是:' || emp_recode2.job);
           -- 使用PL/SQL表(索引表)
           select name into name_table(-50) from employee where empno=1;
           dbms_output.put_line('雇员名:' || name_table(-50));
           -- 使用嵌套表
           -- 必须先设置嵌套表的下标,然后才能对该集合进行赋值
           num_table := num_table_type(1,2,3,4,5);
           num_table(1) := 10;
           num_table(5) := 100;
           dbms_output.put_line('使用嵌套表:' || num_table(1) || ',' || num_table(5));
    exception
       -- 异常处理部分
       when NO_DATA_FOUND then dbms_output.put_line('查询不到员工编号为' || n_empno || '的员工!');
       when TOO_MANY_ROWS then dbms_output.put_line('数据完整性错误,员工编号' || n_empno || '重复!');
       when OTHERS then dbms_output.put_line('PL/SQL执行错误!' || sqlerrm);
    -- 程序结束
    end;
    /
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值