`
提烟而过
  • 浏览: 118210 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Oracle学习(四)——15天Oracle入门

阅读更多

                                               PL/SQL编程(一)

 

:pl/sql基础

  1:PL/SQLoracle在标准sql语言上进行的过程性扩展后形成的程序设计语言.他不仅可以使用

   嵌套的sql而且还充许自定义各种变量,并使用程序实现各种操作.

  2:pl/sql 的基本结构:

     declare--可省

       --变量定义部分

     begin--不可省

      --语句快部分

     exception--可省

       --异常处理部分

     end;--不可省

   3:标量变量的定义 标量有varchar29

    定义语句: va varchar2(20);--定义了一个varchar2类型的变量va,其长度为20;

   4:参照变量 --定义一个变量参照其他已有的类型

    定义语句一: va emp.ename%type --定义了一个变量va,他的类型与emp表中的ename的类型一样

    定义语句二: va emp%rowtype--定义了一个变量va,他的类型与表emp表的行属性完全一样,他可以

                              --存多个数据.

   5:pl/sql语中使用select语句一定要定义一个变量并使用select..into..语句给其赋值

    --这个程序是会报错的,因为其没有给变量赋值

    begin

    select ename from emp where mgr is null;

    end;

    --修改如下:

    declare

    va emp.ename%type;

    begin

    select ename into va from emp where mgr is null;

    dbms_output.put_line(va);

    end;

   6:使用记录record来接收数据.记录record是一种复合数据类型.

   --record 定义如下

    declare

    type my_record is record --定义了一个包含一个number,一个varchar2,一个emp表中hiredate类型相同

    ( va1 number(8), --逗号            --date三个变量,们们组成了一个记录.

      va2 varchar2(20),

      va3 emp.hiredate%type

    );--这里还有一个分号

    va my_record;--定义一个记录变里vava中包含了三种数据类型。

    begin

    select empno,ename,hiredate into va from emp where mgr is null;

    dbms_output.put_line(va.va1||va.va2);--单个记录中的变量应用va.va1这种函数关系

    end;

 


 7:流程控制

    <1>.if语句

        第一种

         if 条件 then

            操作语句

         end if;

        第二种

         if 条件 then

            操作语句

         elsif

            操作语句

         end if

         第三种

          if 条件 then

             操作语句

           else

             操作语句

          end if

    <2>三种循环

          第一种 一般循环

          loop

          end loop;

           第二种 for 循环

           for i in 1..10 loop

           end loop;

           第三种 where 循环

           while 条件 loop

           i:=i+1;

           end loop;

     <3>case语句]

     case 属性

     when 条件值 then

        操作语句

     when 条件值 then

        操作语句

     else

         操作语句

      end case;


 

    8:标签的使用 --go to exit

    begin

      <<ou>>

      for i in 1 .. 10 loop

        dbms_output.put_line('i:' || i);

        for j in 1 .. 10 loop

          dbms_output.put_line('j:' || j);

          exit ou when j = 5; --exit标签必须在exit之前

        end loop;

      end loop;

    end;

  --使用goto 

    begin

      for i in 1 .. 10 loop

        dbms_output.put_line(i);

        if i = 5 then

          goto ou;--goto标签必须在goto之后

        end if;

      end loop;

      <<ou>>

      null;--并且null语句块不能省

    end;

 

二使用复合数据类型

--(1)单行单列的元素利用标量变量

    va  varchar2(20) --最大值为32767字节

    va char(20)      --最大值为32767字节

    va number(n,p)   --n为位数 ,p为精度,其可以省略

    va date          --日期数据类型

    va Timestamp     --亚秒时间数据类型

    va Long(row)     -- long 用于变长字符类型 long row 用于变长二进制 最大长度为32760字节

    va Binary_integer  --用于定义整型数据类型

    va binary_float  --用于定义单精度

    va binary_double --用于定义双精度类型  以上三种数据类型表列都不能用

   

--使用复合数据类型

--(1)单行多列的可以用集合;集合一般分为三种:索引表,嵌套表,varray三种形式。

--<1>索引表 索引表的下标可为负,元素个数没有限制。

declare

  type v_mytype is table of emp.ename%type index by binary_integer;

  v_a v_mytype;

begin

  select ename into v_a(-1) from emp where mgr is null;

  dbms_output.put_line(v_a(-1));

end;

-- 索引表可以用varchar2做为下标

 

declare

type vatype is table of  varchar2(20) index by varchar2(20);

va vatype;

begin

va('南京'):='南京';

va('北京'):='北京';

va('深圳'):='深圳';

va('成都'):='成都';

 dbms_output.put_line(va('南京')||' '||va('北京')||'  '||va('深圳')||' '||va('成都'));

 end;

 

--<2>嵌套表, 嵌套表的下标应该 1 开始,其元素个数没有限制.

create or replace type my_type is table of varchar2(10); --在制表时使用嵌套表

create table qiantiao

(

 tid number(5),

 tname my_type

)nested table tname store as aa;

 

drop  table qiantiao

insert into qiantiao values(1,my_type('kaka'))

 

select * from qiantiao

--select语句中使用嵌套表

declare

vt my_type;

begin

select ename into vt from emp where mgr is null;

for i in 1..va.count loop

dbms_output.put_line(vt(i));</sp

分享到:
评论

相关推荐

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    第一章 Oracle入门 一、 数据库概述 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前。简单来说是本身可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据...

    尚硅谷教学视频

    - **15天精讲精练_Android核心技术**:快速掌握Android开发基础知识,包括UI布局、Activity生命周期、数据存储、网络通信等。 - **Android从入门到实战**:从零开始学习Android开发,最终完成一个完整的项目,巩固所...

    最新尚硅谷全套视频打包地址 包含spring boot cloud 全套 安卓 前端

    1. **20天横扫Java基础**:适合Java初学者,通过20天的学习掌握Java基础语法。 2. **尚硅谷Java基础实战——Bank项目**:通过实际项目加深对Java基础知识的理解和应用。 3. **Oracle、SQL、PLSQL视频教程**:数据库...

    Teach yourself SQL in 21 days.pdf

    通过这21天的学习计划,《在21天内自学SQL》不仅为初学者提供了全面的SQL入门指南,也为有经验的开发者提供了深化技能的机会。无论是为了个人兴趣还是职业发展,这本书都是一个宝贵的资源,旨在帮助读者在有限的时间...

    华为HCNP 8期课程大纲

    - **预约时间:** 考生需要提前至少15天进行考试预约。 **报名条件:** - **个人证件要求:** 参加考试时需携带两种有效的个人证件,例如身份证和驾照、学生证或工作证等。 - **无其他限制:** 华为认证考试报名...

    Teach Yourself SQL in 21 Days

    **Day2:查询入门——SELECT语句** - **SELECT语句**:用于从一个或多个表中检索数据。 - **基本语法**:`SELECT column1, column2 FROM table_name;` - **示例**:`SELECT name, age FROM users;` **Day3:表达式...

Global site tag (gtag.js) - Google Analytics