一、什么是PL-SQL

  PL-SQL是结合了Oracle过程语言和结构化查询语言(SQL)的一种扩展语言。具体来说,PL-SQL就是在普通的SQL语句的基础上增加了编程语言的特点,将数据操作和查询语句组织在PL-SQL代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或者计算的程序语言。

  使用PL-SQL有以下优点:

  1、能够把一组SQL语句放到一个模块中。使其更具模块化特点。

  2、可以在PL-SQL中增加逻辑结构判断、循环等程序结构。

  3、具有异常处理功能。使程序不会中断。

  4、减少网络交互,提高性能。

  5、具有更好的移植性。

二、PL-SQL程序块

PL-SQL程序块包括五个部分,声明部分,程序段开始,代码主体部分,异常部分,程序结束。

DECLARE                    --声明部分
声明变量、常量、游标、用户自定义异常的声明
....
BEGIN --程序开始部分
SQL语句和PL-SQL语句构成的执行语句 --代码主体部分
...
EXCEPTION
程序出现异常时,捕获异常并处理异常。 --异常部分
...
END; --程序结束部分

注意:

1、其中声明部分和异常部分是可选的。

2、DELCARE,BEGIN和EXCEPTION后没有分号,而END和其他所有的PL-SQL语句后必须以分号结束!

三、变量的声明与赋值

1、定义变量的语法:

  DECLARE variable_name date_type(size) [not null][:=value]

  DECLARE:定义变量所使用的关键字。

  variable_name:变量的名称。

  date_type(size):变量的类型,size表示数据长度。

  [not null]:变量不允许为空。

  [:=value]:为变量赋初始值。

示例:  

DECLARE
v_name varchar2(20); --声明一个字符串类型的变量
v_age number:=&age; --声明一个数字类型的变量 &age表示输入数据,会临时弹出一个输入框让我们输入数据。

 PL-SQL中的变量命名规则:

  1、变量名首字母必须是英文字母,后面可以跟上字母、数字、下划线,#,$。

  2、变量名长度不超过30个字符。

  3、变量名中不能有空格。

  4、不能使用关键字命名。

  变量声明通常以字母v_为前缀!

注意:

  变量的声明只在当前程序块中有效。

2、变量的使用和赋值

  a.使用:=进行赋值

  v_name := 'wangwu';  --直接将'wangwu'赋值给变量v_name;

  

  b.使用select..into..进行赋值

DECLARE
PROID NUMBER := &ID;
PNAME VARCHAR(20);
BEGIN
SELECT NAME INTO PNAME FROM ES_PRODUCT WHERE ID = PROID; --将name列的值赋给pname
DBMS_OUTPUT.PUT_LINE(PNAME);
END;

  注意:

    1) 查询结果只能返回单条记录,多条或者0条都会返回异常。

    2) into语句必须是在select 和 from 字句之间。

    3)into所检索出的数据类型必须和变量的类型一致。

    4) into后赋值变量的个数必须和select查询出的变量个数一致。

  如果使用命令行执行PL-SQL代码块,使用/表示执行代码块,然后通过 set serveroutput on;开启输出内容!

  c.一次对多个变量进行赋值,并且变量的类型使用表中的类型。

DECLARE
v_id NUMBER := &ID; --定义输入变量
v_name es_product.Name%TYPE; --定义变量,和es_product.name的类型一致
v_price es_product.Price%TYPE;
BEGIN
SELECT p.name,p.price
 INTO v_name, v_price
 FROM es_product p
 WHERE ID=v_id; --对多个变量进行赋值,这里只能返回单条记录。
DBMS_OUTPUT.PUT_LINE('id:' || v_id || 'name:' || v_name || 'price:' || v_price); --输出内容
END;

  d.定义数据行,使用数据行可以保存多个变量的值。以一个整体保存一条记录的列的信息。(类似对象的方式)

DECLARE
v_id NUMBER := &ID;
v_row es_product%ROWTYPE; --定义变量,es_product.rowtype为esproduct的行类型
BEGIN 
  SELECT p.name,p.price
  INTO v_row.name, v_row.price
  FROM es_product p
  WHERE ID=v_id;
  DBMS_OUTPUT.PUT_LINE('id:' || v_id || 'name:' || v_row.name || 'price:' || v_row.price);
END;

四、常量的声明和使用

在Oracle中当有一些值不想被修改的情况下,可以声明为常量。

语法:  

  常量名 CONSTANT 常量类型 := 初始值。

DECLARE
C_MSG CONSTANT VARCHAR2(20) := '常量的值';
BEGIN
C_MSG := 'aaa';
END;

声明常量C_MSG为字符串类型,如果在程序过程中如果修改常量的值,则会抛出异常。

Oracle基础 PL-SQL编程基础(1) 变量和常量的更多相关文章

  1. Oracle数据库编程:PL/SQL编程基础

    2.PL/SQL编程基础: PL/SQL块:        declare        定义部分        begin        执行部分        exception        异 ...

  2. 【PL/SQL编程基础】

    [PL/SQL编程基础]语法: declare 声明部分,例如定义变量.常量.游标 begin 程序编写,SQL语句 exception 处理异常 end: / 正斜杠表示执行程序快范例 -- Cre ...

  3. PL/SQL编程基础

    1. PL/SQL块的基础结构 DECLARE /* * 定义部分——定义常量.变量.复杂数据类型.游标.用户自定义异常 */ BEGIN /* * 执行部分——PL/SQL语句和SQL语句 */ E ...

  4. Oracle Pl/SQL编程基础

    Pl/SQL简介 提高应用程序的运行性能, 提供模块化的程序设计, 自定义标示符, 具有过程语言控制结构, 良好的兼容性, 处理运行错误. Pl/SQL语言基础 sql是关系数据库的基本操作语言. s ...

  5. PL/SQL编程基础(三):数据类型划分

    数据类型划分 在Oracle之中所提供的数据类型,一共分为四类: 标量类型(SCALAR,或称基本数据类型) 用于保存单个值,例如:字符串.数字.日期.布尔: 标量类型只是作为单一类型的数据存在,有的 ...

  6. Oracle之PL/SQL编程

    PL/SQL(Procedural Language/SQL,过程语言/SQL) 是结合了Oracel过程语言和结构化查询语言(SQL)的一种扩展语言. 优点: (1)PL/SQL具有编程语言的特点, ...

  7. PL/SQL编程基础(二):变量的声明、赋值、(赋值、连接、关系、逻辑)运算符

    变量的声明.赋值.运算符 1.声明并使用变量 变量可以在声明时赋值,也可以先定义后赋值: 使用%TYPE与%ROWTYPE可以根据已有类型定义变量. PL/SQL是一种强类型的编程语言,所有的变量都必 ...

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

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

  9. Oracle PL/SQL 编程基础 实例

    create table mytest(name varchar(20),password varchar(30)); create or replace procedure sp_pro2 is  ...

  10. PL/SQL编程基础(一):PL/SQL语法简介(匿名PL/SQL块)

    PL/SQL PL/SQL是Oracle在关系数据库结构化查询语言SQL基础上扩展得到的一种过程化查询语言. SQL与编程语言之间的不同在于,SQL没有变量,SQL没有流程控制(分支,循环).而PL/ ...

随机推荐

  1. QTbaWidget控件几个例程 【worldsing笔记】

    Qt Creator自带的 QTabWidget控件几个例程 在Qt Windos版本安装后,在Example目录可以找到与QTabWidget相关的工程Demo,如果按默认安装的话他们分别是:   ...

  2. IIS6.0禁止用户下载txt文件

    服务器win2003+IIS6.0,在IIS上限制下载.txt文件,方法比较简单,在IIS的应用程序扩展名映射中为资源扩展名指定一个错误的可执行文件即可. 打开记事本,直接将空内容保存为C:\WIND ...

  3. How Tomcat Works(十六)

    本文接下来会介绍Host容器和Engine容器,在tomcat的实际部署中,总是会使用一个Host容器:本文介绍Host接口和Engine接口及其相关类 Host容器是org.apache.catal ...

  4. .net 学习资源(转)

      名称:快速入门地址:http://chs.gotdotnet.com/quickstart/描述:本站点是微软.NET技术的快速入门网站,我们不必再安装.NET Framework中的快速入门示例 ...

  5. Javascript 正则表达式校验数字

    $("input[datatype=number]").blur(function () {                      var str = $(this).val( ...

  6. 【转】google推出的SwipeRefreshLayout下拉刷新用法

    SwipeRefreshLayout是Google在support v4 19.1版本的library更新的一个下拉刷新组件,实现刷新效果更方便. 使用如下: 1.先下载android-support ...

  7. Libvirt 网络管理

  8. JS 执行环境与作用域链

    1.执行环境 JavaScript 代码都是在执行环境中被执行的.执行环境是一个概念,一种机制,用来完成JavaScript运行时在作用域.生命周期等方面的处理,它定义了变量或函数是否有权访问其他数据 ...

  9. Ext.form.ComboBox 后台取值 动态加载 ext5.0.0

    我用的extjs是5.0.0版本的. 请注意:如果这里没有的combobox相关内容,这里一定有. 开始的时候keyup事件取到的数据就是放不到ComboBox中,放全局变量也不好用.最后大神出手帮忙 ...

  10. PHP 打印调用函数入口地址(堆栈),方便调式

    今天网站出现一个BUG,然后直接在数据库类里面写日志,看是哪条SQL出了问题,SQL语句到是找到了,但是不知道这条SQL语句来自何处,于是就想啊,如果能有一个办法,查看当前正在运行的这个方法是被哪个方 ...