`
zpx138332
  • 浏览: 46123 次
  • 性别: Icon_minigender_1
  • 来自: 河北
社区版块
存档分类

oracle基础总结(十一)

阅读更多

 

PL/SQL编程

  PL/SQLoracle的专用语言,它对标准的SQL语言的扩展.SQL语句可以嵌套在PL/SQL语言中,并结合处理语句。

 

PL/SQL程序结构

  使用了程序块的结构组织的代码.最简单的程序块是一种被称为匿名块的程序块,匿名块是指不会被oracle存储并且不能够重用程序块。

PL/SQL程序通常包括3部分:Declare部分、exception部分、Beginend部分.

BeginendPL/SQL的必须部分,总是begin开始end结束.

 

Declare部分包含定义变量、常量和游标等类型的代码.

 

Beginend之间可以嵌套beginendexception.

 

//打开服务器的输出

SQL> set serveroutput on;

SQL> begin //开始

  2  dbms_output.put_line('Hello World');

  3  end;

  4  /

变量与常量的声明:

     变量名  类型(字符,日期,数字,布尔)[:=缺省值];

     常量名 constant 类型(字符,日期,数字,布尔) [:=缺省值];

 

变量与常量的区别:

     变量可以在任何部分进行赋值.

     而常量在declare中声明并且赋值.

注意:都是在declare中声明

 

正确的操作:

declare

    pagesize constant number(2) :=10;

begin

    dbms_output.put_line(pagesize);

end;

/

 

作用域:

   是能够引用变量名称这样的标识符的程序块。

    

declare

   pagesize number(2):=10;  //在整个中都有效

begin

   dbms_output.put_line(pagesize);

   declare

   pagesize number(2):=99; //只是在内容声明部分到end结束有效

    begin

    dbms_output.put_line(pagesize);

    end;

end;

/

 

 

 

//声明一个整型的变量

SQL> declare

  2   age number(2);

  3  begin

  4  age:=90;

  5  dbms_output.put_line(age);

  6  end;

  7  /

//声明后直接赋值

SQL> declare

  2   age number(2) :=90;

  3  begin

  4  dbms_output.put_line(age);

  5  end;

  6  /

//捕获异常处理

SQL> declare

  2  age number(2);

  3  begin

  4  age :='qwe'

  5  ;

  6  exception

  7  when others then

  8  dbms_output.put_line('赋值失败');

  9  end;

 10  /

 

 

条件判断语句

  ifcase语句

  

  If语句

If语法

   Ifexpression1then pl/sql_statement

   Else

        Pl/sql_statement;

   End if;

  

Ifexpression1then pl/sql_statement

   Else ifexpression2

        Pl/sql_statement;

   Else

        Pl/sql_statement;

   End if;

  

 

 Case语句

     oracle9i以后引入

     Case <selector>

        When <expression1> then pl/sql_statement1;

        When <expression2> then pl/sql_statement2;

        …….

        [else  pl/sql_statement;]

     End;

//案例

SQL> declare score number(2) :=80;

   begin

       if score>70 then dbms_output.put_line('成绩合格');

   end if;

   end;

  /

 

SQL> declare score number(2) :=80;

   begin if score>90 then dbms_output.put_line('成绩合格');

 else dbms_output.put_line('成绩不合格');

end if;

end;

/

 

成绩不合格

 

 

SQL> declare score number(2):=8;

begin

case score

when 9 then dbms_output.put_line('成绩优秀');

when 8 then dbms_output.put_line('成绩亮');

end case;

end;

 /

 

循环语句

  最基本的循环称为无条件循环,如果没有指定exit语句,循环将无条件执行,这种循环称为死循环,死循环尽量避免。

语法格式如下:

     Loop

       ---statement---

 Exit when condition

 End loop;

 

案例:

SQL> declare

      i number(2):=1;

       begin

            loop

              dbms_output.put_line(i);

                   i:=i+1;

          exit when i>10;

          end loop;

          end;

   /

 

While循环

    语法:

    While condition

         Loop

           Statement;

        End loop;

 

SQL> declare

     i number(2):=1;

         begin

           while i<10   

              loop dbms_output.put_line(i);

                i:=i+1;

             end loop;

          end;

  /

 

For循环

     For loop_control_variable in [reverse] lower upper loop

          Statement;

        End loop;

 

  SQL> begin

         for i in 1..10

            loop

            dbms_output.put_line(i);

           end loop;

       end;

      /

 

 

PL/SQL语句中的SQL语句

declare

   countnum number(2); //声明变量

begin

   select count(*) into countnum from emp; //into的作用把从数据中检测出的数据赋值给哪个变量

   dbms_output.put_line(countnum);

end;

/

注意:如果在select中没有into语句会出现bug

 

 

declare

   empno number(4);

   ename varchar2(10);

   job varchar2(9);

begin

   select empno,ename,job into empno,ename,job from emp;

   dbms_output.put_line(empno||'/'||ename||'/'||job);

end;

/

以上代码中会出现bug bug原因是因为定义的变量只可以存储一个单独的值,而你返回的是多个值.所以应该为如下:

SQL> declare

  2     empno number(4);

  3     ename varchar2(10);

  4     job varchar2(9);

  5  begin

  6     select empno,ename,job into empno,ename,job from emp where empno='7369'; //在这加上where条件了

  7     dbms_output.put_line(empno||'/'||ename||'/'||job);

  8  end;

  9  /

 

7369/SMITH/CLERK

 

%TYPE%ROWTYPE类型的变量

      在定义变量时处理可以使用oracle规定的数据类型外,还可以使用%TYPE%ROWTYPE来定义变量.

     %TYPE类型的变量是专门为存储在数据列中检索到的值而创建的.对于使用%TYPE创建的变量,其数据类型由系统根据检索的数据列的数据类型决定.

     %ROWTYPE类型的变量,它可以一次存储从数据库检索的一行数据。

 

当你不知道表中的数据类型是什么时候?那你就考虑%TYPE来解决此问题。

SQL> declare

  2     empno emp.empno%TYPE; //声明的时候一定要加上表的中列

  3     ename emp.ename%TYPE;

  4     job   emp.job%TYPE;

  5  begin

  6     select empno,ename,job into empno,ename,job from emp where empno='7369';

  7     dbms_output.put_line(empno||'/'||ename||'/'||job);

  8  end;

  9  /

 

7369/SMITH/CLERK

emp.empno%TYPE; 解析:首先它到emp表中去查找empno %TYPE返回其数据的数据类型。

 

%TYPE的好处:

1、  可移植性高(当我们对表的数据类型发生改变时,用户不必考虑定义变量类型)

2、  用户不必查看数据类型就可以定义变量能够存储检索的数据。

 

%ROWTYPE

   SQL> declare

  2      row_data emp%ROWTYPE;

  3  begin

  4     select * into row_data from emp where empno='7369';

  5     dbms_output.put_line(row_data.empno||'/'||row_data.ename||'/'||row_data.job);

  6  end;

  7  /

注意:如果定义了%rowtype类型的变量,该变量的结构与定义表的结构完全相同,查询时必须使用*或者列举全部的字段信息。

 

 

复合变量

   

   复合变量可以将不同的数据类型的多个值存储在一个单元中.由于复合数据类型可以有用户根据需要定义其结构,所以复合数据类型也称为自定义数据类型。

  PL/SQL提供了两种类型的复合数据类型:

1、  记录类型

在记录类型中可以存储多个标量值,与数据库中的行相似

2、  记录表类型

允许用户在程序代码中使用”,以便存储多个行的数据。它只在程序运行期间有效。类似于程序代码中集合|数组。

 

记录类型:

   必须使用TYPE语句定义记录类型的语法声明如下:

TYPE record_name is record(

Field_name data_type[not null :=default value]

………

)

    

%Rowtype不同之处是

   1%rowtype查询的是全部数据

   2、记录类型必须使用type语法格式声明

//案例

SQL> declare

  2     type empinfo is record(  //声明一个记录类型

  3       empno number(4),

  4       ename varchar2(10),

  5       job  varchar2(9)

  6     );

  7 

  8   emp_data  empinfo; //声明一个记录类型的变量

  9  begin

 10    select empno,ename,job into emp_data from emp where empno=7369; //查询的结果赋值给定义的变量

 11    dbms_output.put_line(emp_data.empno||'/'||emp_data.ename||'/'||emp_data.job);

 12  end;

 13  /

 

 

记录表类型

   它可以处理多个记录或多个行记录。

1、  为什么使用记录表类型呢?

 </

分享到:
评论

相关推荐

    oracle的总结 很详细的 基础也有

    本文将基于标题和描述中的内容,对Oracle的基础知识、安装步骤以及SQL查询语句进行详尽的阐述。 首先,新安装的Oracle数据库的配置步骤至关重要。在安装完成后,需要通过Database Configuration Assistant(DBCA)...

    oracle 基础知识总结初学者必备

    ### Oracle基础知识总结初学者必备 Oracle数据库作为一款广泛使用的数据库管理系统,在企业和开发领域扮演着重要的角色。对于初学者而言,掌握其基础知识是非常必要的。本文将根据提供的内容进行深入解析,并结合...

    Oracle核心基础总结

    "Oracle核心基础总结"涵盖了Oracle数据库系统的基础知识,对于初学者和需要巩固基础的IT从业者来说,是非常宝贵的资源。以下是Oracle核心基础的一些关键知识点: 1. 数据库概念:了解数据库的基本构成,如表、索引...

    oracle基础总结

    系统的总结了oracle的基础知识,对oracle基础想补充的朋友应该很有帮助,语言简练,都是开发时常用到的知识

    oracle基础命令总结.docx

    以下是对文档中提到的Oracle基础命令的详细解释: 1. **数据泵语句**:Oracle数据泵(Data Pump)是一种高速数据传输机制,用于在数据库之间导入和导出数据。创建目录对象是为了指定数据泵操作的数据文件存放位置。...

    Oracle 基础知识总结

    以下是对Oracle基础知识的详细总结: 第一章:Oracle概述 Oracle数据库是Oracle公司的产品,提供了一整套数据管理解决方案。它支持多种操作系统平台,如Windows、Linux、Unix等。Oracle采用SQL作为查询语言,并提供...

    oracle 学习心得与总结

    以下是我对Oracle学习的一些心得和总结,主要聚焦于数据库对象,尤其是表及其约束。 1. **数据库对象**: 数据库对象是Oracle中的基本组成部分,包括表、视图、索引、存储过程、函数、触发器等。这些对象共同构成...

    oracle学习总结(适合刚学习oracle的人)

    本文将根据"oracle学习总结(适合刚学习oracle的人)"这一主题,深入探讨Oracle数据库的基础知识,帮助初学者建立起对Oracle的基本理解。 1. **Oracle简介**:Oracle数据库是由美国甲骨文公司开发的一款产品,它...

    oracle个人总结的基础知识

    本总结将深入探讨Oracle基础知识,包括过程、游标、包、视图以及导入导出等关键概念。 首先,让我们关注“过程”。在Oracle中,过程是一系列SQL语句和PL/SQL代码的集合,它们可以执行特定任务。过程可以接受参数,...

    oracle总结oracle总结面试必备

    掌握SQL的基础语法,如SELECT、INSERT、UPDATE、DELETE语句,以及联接(JOIN)、子查询、聚合函数(COUNT、SUM、AVG等)和分组(GROUP BY)等,是每个Oracle开发者的基本功。 二、创建表 创建表是数据库设计的第一...

    oracle学习心得总结

    本文将根据提供的文档内容,总结和扩展Oracle数据库的基础知识点,帮助初级程序员更好地理解和掌握Oracle。 #### 一、Oracle 用户管理 1. **创建用户** - 命令格式:`CREATE USER 用户名 IDENTIFIED BY 密码;` ...

    oracle 笔记总结

    一、Oracle数据库基础 Oracle数据库采用SQL(结构化查询语言)作为其主要的数据交互方式,支持ACID(原子性、一致性、隔离性和持久性)事务特性,确保数据的完整性和一致性。Oracle数据库系统由多个组件构成,包括...

    oracle数据库基础命令总结(纯手工打造)

    本文将深入讲解Oracle数据库的基础命令,涵盖数据库的基本概念、关系数据库模型、数据操作语言(DDL、DML、DCL)以及数据库设计方法。 首先,理解数据库基础至关重要。数据库是一个组织和存储数据的系统,它允许...

    oracle精品实例,练习总结

    1. **SQL语言**:Oracle数据库的基础是SQL(结构化查询语言),用于数据查询、更新、插入和删除。在实例中,我们可能看到如何使用SELECT语句进行复杂查询,JOIN操作连接多个表,以及如何使用WHERE子句进行条件筛选。...

    Oracle基础知识总结_oracle_

    Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性...

    oracle个人总结

    Oracle数据库是世界上最广泛使用的数据库管理系统之一,主要用于存储和管理...这些是Oracle数据库的基础知识,对于理解和操作Oracle数据库至关重要。通过深入学习和实践,可以更好地掌握Oracle的各种特性和高级功能。

    oracle 基础知识整理

    总结,Oracle基础知识涵盖了数据库架构、数据类型、SQL操作、表空间管理以及备份恢复策略等多个方面。掌握这些基础知识对于理解和使用Oracle数据库至关重要,有助于构建高效稳定的企业级数据环境。

    oraclePPT总结及笔记

    本资料“oraclePPT总结及笔记”是针对青软实训的学员们设计的一套全面的学习资源,旨在帮助他们深入理解和掌握Oracle数据库的相关知识。以下是基于这个主题的详细知识点讲解: 1. **Oracle数据库基础**: - 数据库...

    oracle学习总结

    ### Oracle学习总结 #### SQL基础语法 1. **数据定义语言(DDL)** - **创建表**:`CREATE TABLE table_name (column_name datatype constraints,...);` - `NOT NULL`:指定列不允许有空值。 - `UNIQUE`:指定列...

Global site tag (gtag.js) - Google Analytics