PL/SQL是一种块结构的语言,这意味着PL/SQL程序被划分和编写代码的逻辑块。每块由三个子部分组成:
1     声明
此部分开头使用关键字DECLARE。它是一个可选的部分,并限定在该程序中使用的所有变量,游标,子程序,和其他元素。
2     可执行命令
此部分是封闭关键字BEGIN和END,这是一个强制性的部分。它由程序的可执行文件的PL/SQL语句。它应具有至少一个可执行的代码行,这可能仅仅是一个空命令,以指示什么都不执行。
3     异常处理
此部分开头使用关键字EXCEPTION。此部分又是可选的,含有异常,在程序处理错误中。

这里是一个PL/SQL块的基本结构:
DECLARE
   <declarations section>
BEGIN
   <executable command(s)>
EXCEPTION
   <exception handling>
END;

一、声明
声明一个变量的语法是:
    [VARIABLE]    variable_name [CONSTANT] datatype [NOT NULL] [:= | DEFAULT initial_value]

变量声明
<变量名> 类型[:=初始值];

常量声明
<变量名> CONSTANT 类型:=初始值;        --示例: pi CONSTANT number(5,3):=3.14;

全局变量声明
VARIABLE <变量名> 类型;                        --示例: VARIABLE num number;

初始化变量
counter binary_integer := 0;
greetings varchar2(20) DEFAULT 'Have a Good Day';

变量的作用域
有两种类型的变量范围:
    局部变量 - 在[内部块中]声明,并不能访问外块中的变量。
    全局变量 - 在[最外层块]或包中声明的变量。

二、数据类型
基本数据类型和特殊数据类型
基本数据类型:number(p,s);varchar2(size);char(size);long;nvarchar2(size);nchar(size);date;boolean;real(与number等价);rowid(存放数据库的行号);
特殊数据类型:%type类型(单个字段);record类型(多个字段);%rowtype类型(一条记录)。

1、%type类型:声明一个与指定列相同的数据类型。
如:var_ename emp.ename%type;
声明的var_ename的数据类型与emp表中的ename列数据类型相同。

set serveroutput on                --设置系统输出的状态.
declare var_firstname EMPLOYEES.first_name%type;
var_job       EMPLOYEES.job_id%type;
begin
  ;
  SYS.dbms_output.put_line(var_firstname||'的工作是'||var_job);
end; 

2、record类型:也成为‘记录类型’,要先定义一个记录类型,再使用记录类型声明一个记录类型的变量。 如:

set serveroutput on
declare
type emp_type is record          /*先定义一个记录类型,emp_record为定义的记录类型名*/
(
var_a1 EMPLOYEES.first_name%type,
var_a2 EMPLOYEES.job_id%type,
var_a3 EMPLOYEES.salary%type
);
empinfo emp_type;              /*再声明一个记录类型的变量*/
begin
  ;
  dbms_output.put_line(empinfo.var_a1||'的工作是'||empinfo.var_a2||',并且工资是'||empinfo.var_a3);
end;

3、%rowtype类型:用来存储数据表中检索到的一行数据。

set serveroutput on
declare
var_row EMPLOYEES%rowtype;    /*emp_row表示变量名;emp为指定的表名,表示用来存储哪个表中的一行数据*/
begin
  ;
  dbms_output.put_line(var_row.first_name||'的工作是'||var_row.job_id||',并且工资是'||var_row.salary);
end;

三、语句语法

1、条件控制语句
IF <条件1> THEN
    语句
[ELSIF <条件2> THEN
   语句
     ....
ELSIF <条件n> THEN
   语句]
[ELSE
    语句]
END IF;

2、循环控制语句
1.LOOP
LOOP
   语句;
   EXIT WHEN <条件>
END LOOP;

2.WHILE LOOP
WHILE <条件>
LOOP
   语句;
END LOOP;

3.FOR
FOR <循环变量> IN 下限..上限
LOOP
   语句;
END LOOP;

三、NULL 语句
null;
表示没有操作;

四、
异常处理
EXCEPTION
   WHEN <异常类型> THEN
            语句;
   WHEN OTHERS THEN
            语句;
END;

Oracle pl/sql 基础入门语法的更多相关文章

  1. Oracle+PL+SQL从入门到精通.丁士锋.清华大学出版社.2012

    \t第1篇 pl/sql开发入门第1章 oracle 11g数据库系统1.1 关系型数据库系统介绍1.1.1 什么是关系型数据模型1.1.2 数据库系统范式1.1.3 关系型数据库管理系统1.1.4 ...

  2. 二十、oracle pl/sql基础

    一.pl/sql developer开发工具pl/sql developer是用于开发pl/sql块的集成开发环境(ide),它是一个独立的产品,而不是oracle的一个附带品. 二.pl/sql介绍 ...

  3. oracle pl/sql 基础

    一.pl/sql developer开发工具pl/sql developer是用于开发pl/sql块的集成开发环境(ide),它是一个独立的产品,而不是oracle的一个附带品. 二.pl/sql介绍 ...

  4. oracle PL/SQL基础编程

    PL/SQL(Procedural Language/SQL)是oracle中引入的一种过程化编程语言 PLS-00103:出现符号"declare"在需要下列之一时 符号&quo ...

  5. Oracle PL/SQL基础

    1.下载sql developer数据库连接可视化工具 连接地址:点我下载 下载完成,安装有Java环境,解压即可运行,也可以在linux系统中运行.

  6. Oracle PL/SQL入门之慨述

    Oracle PL/SQL入门之慨述 一.PL/SQL出现的目的 结构化查询语言(Structured Query Language,简称SQL)是用来访问关系型数据库一种通用语言,它属于第四代语言( ...

  7. Oracle PL/SQL语句基础学习笔记(上)

    PL/SQL是ORACLE对标准数据库语言的扩展,ORACLE公司已经将PL/SQL整合到ORACLE server和其它工具中了,近几年中很多其它的开发者和DBA開始使用PL/SQL,本文将讲述PL ...

  8. oracle PL/SQL编程基础知识

    在oracle中使用pl/sql来扩展SQL的功能,使得SQL能够更加的灵活,功能更加强大,效率更高.pl/sql让sql也能执行判断,循环等操作.主要记录一下pl/sql的基本语法和基本条件判断语句 ...

  9. ORACLE PL/SQL编程详解

    ORACLE PL/SQL编程详解 编程详解 SQL语言只是访问.操作数据库的语言,并不是一种具有流程控制的程序设计语言,而只有程序设计语言才能用于应用软件的开发.PL /SQL是一种高级数据库程序设 ...

随机推荐

  1. TCP/IP 详解笔记

    最早的 TCP 协议文档是 RFC793. TCP 提供一种面向连接的.可靠的字节流服务. 面向连接容易理解,那么什么是字节流服务呢? 答:两个应用程序通过 TCP 连接交换 8 bit 字节构成的字 ...

  2. Beautifusoup

    text = soup.find('div', {'class': 'mulu'}) #查找目录,坑死我了.就这个东西,知乎上看别人写的爬取网络小说,这个最适合我.我一开始老是使用beautifuls ...

  3. Spring_总结_03_装配Bean(三)_XML配置

    一.前言 本文承接上一节:Spring_总结_03_装配Bean(二)之Java配置 上一节说到,当需要显示配置时,首选类型安全并且比XML更强大Java配置. 那什么时候使用XML配置呢? (1)维 ...

  4. JavaScript--收藏栏添加按钮,放大hdu题目字体

    觉得HDOJ的题目字体太小了,一波小操作 在收藏栏添加:添加网页->网址改为: javascript: void((function() { var element = document.get ...

  5. hdu-3790-最短路径问题(Dijkstra)

    题目链接 /* Name:hdu-3790-最短路径问题 Copyright: Author: Date: 2018/4/16 19:16:25 Description: dijkstra 模板题 * ...

  6. 3.4 常用的两种 layer 层 3.7 字体与文本

    3.4 常用的两种 layer 层  //在cocos2d-x中,经常使用到的两种 layer 层 : CCLayer 和 CCLayerColor //CCLayer 的创建 CCLayer* la ...

  7. 机器学习(六)— logistic回归

    最近一直在看机器学习相关的算法,今天学习logistic回归,在对算法进行了简单分析编程实现之后,通过实例进行验证. 一 logistic概述 个人理解的回归就是发现变量之间的关系,也就是求回归系数, ...

  8. XE7 UTF8Encode

    之前用D7写的客户端程序升级到XE7,服务端依旧用D7.使用TIdHTTP控件 Get(URL)方法,服务端(TIdHttpServer)收到的中文字符解释成乱码. 鼓捣了一会,这么搞定的: 1. 客 ...

  9. /etc/ntp.conf

    摘录一: System:ubuntu10.04 配置文件路径:/etc/ntp.conf   配置格式:关键字(如server)    参数(如prefer) 以换行为结束,所以一个配置不能占多行. ...

  10. Hive的JDBC访问引发的Maven依赖的实践

    invalid LOC header (bad signature) 原来是因为依赖问题,直接依赖“hive-server”的见解依赖jetty-all有冲突:诡异的是在main方法中执行是OK的,但 ...