Oracle中PL/SQL简介、基本语法以及数据类型

一.PL/SQL简介。

  Oracle PL/SQL语言(Procedural Language/SQL)是结合了结构化查询和Oracle自身过程控制为一体的强大语言,PL/SQL不但支持更多的数据类型,拥有自身的变量申明,赋值语句,而且还有条件,循环等流程控制语句。过程控制结构与SQL数据处理能力无缝的结合形成了强大的编程语言,可以创建过程和函数以及程序包。

  PL/SQL是一种块结构的语言,它将一组语句放在一个块中,一次性的发送给服务器,由服务器和自身引擎两个执行器执行代码。如下图:

  

  优点:

  • 支持SQL

    SQL是访问数据库的标准语言,通过SQL命令,用户可以操纵数据库的数据。PL/SQL支持所有的SQL数据操纵命令、游标控制命令、事务控制命令、SQL函数、运算符和伪列。

  同时PL/SQL和SQL语言紧密集成,PL/SQL支持所有的SQL数据类型和NULL值。

  • 支持面向对象编程

    PL/SQL支持面向对象的编程,在PL/SQL中可以创建类型,可以对类型进行继承,可以在子程序中重载方法等。

  • 更好的性能

    SQL是非过程语言,只能一条一条的执行,而PL/SQL把一个PL/SQL统一进行编译后执行,同时还可以把编译好的PL/SQL块存储起来,以备重用,减少了应用程序和服务器之间的通      信时间,所以PL/SQL是高效而快速的。

  • 可移植性

    使用PL/SQL编写的应用程序语言,可以移植到任何操作平台的ORACLE服务器,同时还可以编写可移植程序库,在不同环境中使用。

  • 安全性

    可以通过存储过程对客户机和服务器之间的应用程序逻辑进行分割,这样可以限制对ORACLE数据库的访问,数据库还可以授权和撤销其他用户的访问权利。

二.PL/SQL基本语法。

  PL/SQL是一种块结构的语言。一个PL/SQL包含了一个或多个逻辑快,逻辑块中可以声明变量、写程序主体、还可以捕获异常和异常处理。每个逻辑快分为三个部分,语法结构如下:

    PL/SQL的语法结构


  [DECLARE

      --declaration statements]                变量或常量声明部分。可选。

  BEGIN

      --executable statements         执行部分。BEGIN开始,END结束(加;号)。必须写。

  [EXCEPTION

      --exception statements]         异常处理部分。可选。作用于java中异常的作用和机制都一样。

  END;

  注意:

  • LP/SQL是一种编程语言,有自己独有的数据类型,变量声明和赋值以及流程控制语句。
  • 对大小写不敏感,但是为了规范:关键字全部大写,其余部分小写。
  • 每一条语句以分号结束。

    PL/SQL特殊符号说明:

  

三.变量和常量。

  声明变量:

  变量名 数据类型[:=初始值];

DECLARE
a int;
BEGIN
select MGR into a from emp where empno=7369;
END;

  变量名 数据类型 DEFAULT 初始值;

DECLARE
b int default 0;
BEGIN
select MGR into b from emp where empno=7369;
END;

  声明普通常量:

  常量名 CONSTANT 数据类型 :=常量值;

set serveroutput on;  --设置向控制台输出
DECLARE
c CONSTANT int:=666;
BEGIN
dbms_output.put_line(c);
END;

四.PL/SQL数据类型。

  • 标量数据类型  

    前面在建表时,学习过Oracle SQL的数据类型,PL/SQL不但支持这些数据类型,还具备自身的数据类型。如下图:

  

  

  • 属性数据类型

    当声明一个变量的值是数据库的一行或者是数据库的某列时,可以直接使用属性类型来声明。ORACLE有两种属性数据类型:%TYPE和%ROWTYPE

    %ROWTYPE

      引用数据库表中的一行作为数据类型,可以使用" . " 来访问记录中的属性。

      实例:

set serveroutput on;                                      结果:
                                                  
DECLARE                                                    EMPNO ENAME SAL
myrow EMP%ROWTYPE;                                             7369 SMITH 800
BEGIN
select * into myrow from emp where empno=7369;
dbms_output.put_line('EMPNO ENAME SAL');
dbms_output.put_line(myrow.empno||' '||myrow.ename||' '||myrow.sal);
END;

    %TYPE

      引用某个变量或者数据库的列的类型作为某变量的数据类型。

      实例:

set serveroutput on;
DECLARE                                              说明:
sal emp.sal%TYPE;                        
mytype NUMBER(4):=1000;                                          定义sal的数据类型为emp表中sal的数据类型。
sumsal mytype%TYPE;
BEGIN
select SAL into sal from emp where empno=7499;                             定义sumsal的数据类型为mytype的数据类型。
sumsal:=sal+mytype;
dbms_output.put_line(sumsal);
END;

Oracle中PL/SQL简介、基本语法以及数据类型的更多相关文章

  1. Oracle中PL/SQL的执行部分和各种流程控制

    Oracle中PL/SQL的执行部分和异常部分 一.PL/SQL的执行部分. 赋值语句. 赋值语句分两种,一种是定义一个变量,然后接收用户的IO赋值:另一种是通过SQL查询结果赋值. 用户赋值举例: ...

  2. Oracle中PL/SQL的循环语句

    在PL/SQL中可以使用LOOP语句对数据进行循环处理,利用该语句可以循环执行指定的语句序列.常用的LOOP循环语句包含3种形式:基本的LOOP.WHILE...LOOP和FOR...LOOP. LO ...

  3. Oracle中PL/SQL 范例

    1.写匿名块,输入三角形三个表的长度.在控制台打印三角形的面积 declare v_side_first ):=&第一条边; v_side_second ):=&第二条边; v_sid ...

  4. oracle中pl/sql 练习题----输入部门编号,在控制台打印这个部门的名称,总人数,平均工资(基本工资+奖金)

    一. 思路:声明record类型的变量,根据 多表联合查询查出想要的数据,最后输出. 二.注意:record类型不一定只是一个表中的数据,也可以声明不同表中的数据类型. 三.语句如下: declare ...

  5. oracle 10g 学习之PL/SQL简介和简单使用(10)

    PL /SQL是一种高级数据库程序设计语言,该语言专门用于在各种环境下对ORACLE数据库进行访问.由于该语言集成于数据库服务器中,所以PL/SQL代码可以对数据进行快速高效的处理.PL/SQL是 P ...

  6. oracle中动态SQL详解

    部分内容参考网上资料 1.静态SQLSQL与动态SQL Oracle编译PL/SQL程序块分为两个种:其一为前期联编(early binding),即SQL语句在程序编译期间就已经确定,大多数的编译情 ...

  7. oracle中动态SQL使用详细介绍

    Oracle编译PL/SQL程序块分为两个种:通常静态SQL采用前一种编译方式,而动态SQL采用后一种编译方式,需要了解的朋友可以参考下     1.静态SQLSQL与动态SQL Oracle编译PL ...

  8. (转)Oracle中动态SQL详解

    本文转载自:http://www.cnblogs.com/gaolonglong/archive/2011/05/31/2064790.html 1.静态SQLSQL与动态SQL Oracle编译PL ...

  9. [转载]Oracle中动态SQL详解

    1.静态SQLSQL与动态SQL Oracle编译PL/SQL程序块分为两个种:其一为前期联编(early binding),即SQL语句在程序编译期间就已经确定,大多数的编译情况属于这种类型:另外一 ...

随机推荐

  1. iOS学习03C语言循环结构

    1.while循环 while (循环条件) {        循环体: } // 1.定义循环变量 ; // 2.循环条件 ) { // 3.循环体 printf("%d\n", ...

  2. unity 常用函数

    GameObject.FindGameObjectByTag(); anim.SetFloat("speed",Mathf.Abs(h)); Physics2D.lineCast2 ...

  3. 【BZOJ1036】[ZJOI2008]树的统计Count 树链剖分

    [BZOJ1036][ZJOI2008]树的统计Count Description 一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w.我们将以下面的形式来要求你对这棵树完成一些操作: I. ...

  4. MySQL数据类型和常用字段属性总结

    前言 好比C++中,定义int类型需要多少字节,定义double类型需要多少字节一样,MySQL对表每个列中的数据也会实行严格控制,这是数据驱动应用程序成功的关键.MySQL提供了一组可以赋给表中各个 ...

  5. 移动端开发——javascript

    javascript(简称js)语言在移动前端应用很广.可以说必不可少,许多效果都是和js相关的.包括现在移动端的一些框架.jqmobi.jqtouch.sencha touch.jquerymobi ...

  6. C语言(2)

    C语言(2)---变量 基本格式: 变量类型  变量名1[,变量名2,变量名3,...变量名n]: 注意: 1.在C语言中如果申请一个变量,里面存放小数,则用float表示,且在输出时需要注意prin ...

  7. Flex——Array,ArrayCollection,Vector性能比较(转)

    测试方法 private function Test():void { ;j<;j++) { trace("插入10000项============"); var t1:in ...

  8. java分享第三天(异常)

    异常的处理办法之一 捕获异常(try,catch,finally) 1 try语句指定了一段代码,该段代码就是一次捕获并处理的范围.在执行过程中,当任意一条语句产生异常时,就会跳过该段中后面的代码.代 ...

  9. Odoo 动态设置树形视图列表中的字段

    依赖第三方模块实现,实现效果图如下: 原模块只有9.0版本 ,今改成了8.0版本. git地址见群内公告.

  10. print_r、echo、var_dump三者的区别

    这三者均是php里输出的方式. 1.print_r用于输出数组. 2.echo只能用于输出字符串,在没有框架的时候,多用这种方法将结果打印在html页面上. 3.var_dump能输出任何类型的数据, ...