OraclePL/Sql编程——初识PL/SQL

本文详细介绍了PL/SQL的基本块结构,包括声明、执行和异常处理部分,并通过实例展示了如何编写计算两个整数商的代码块。此外,还探讨了PL/SQL中的注释规范和标识要求,以及各种数据类型的应用,如%TYPE、RECORD和%ROWTYPE。通过示例,阐述了如何利用这些数据类型声明变量和常量,以及如何处理表中数据。
摘要由CSDN通过智能技术生成

PL/Sql是一种过程化语言,它能实现操控程序处理的细节过程,使用PL/SQL语言可以实现较为复杂的业务逻辑,PL/SQL是orcale的专用语言,他是对标准的SQL语言的扩展,它允许在其内部嵌套普通的SQL语言,这样就能将SQL语言的数据操纵能力、数据查询能力和PL/Sql的过程处理能力结合在一起。

一、PL/SQL块结构

PL/SQL程序都是以块结构为基本单位,整个PL/SQL块分为三部分:声明部分(用DECLARE开头)、执行部分(BEGIN开头)、异常处理部分(EXCEPTION开头),其中执行部分是必须的,其余那个部分可选

[DECLARE]
—声明部分,可选
—声明PL/SQL程序块中所用到的变量、常量和游标等
—声明的内容只能当前块使用,其余块无法引用
BEGIN
—执行部分, 必须
—主要的逻辑控制和运算
—以end结束或者出现异常执行异常处理部分
[EXCEPTION]
—异常处理部分, 可选

eg:定义一个PL/SQL代码块,计算两个整数的和与两个整数的差的商

set serveroutput on ----服务端显示执行结果
DECLARE
a int:= 10;
b int:= 20;
c number;
begin
c := (a+b)/(a-b);
dbms_output.put_line(c);
EXCEPTION
when zero_divide then
dbms_output.put_line('除数不能为0');
end;
/

二、代码注释和标识

注释用于对程序代码的解释说明,增强程序的可读性,注释编译时被PL/SQL的编译器所忽略调,注释分为单行注释和多行注释。
另外PL/SQL声明的常量、变量、游标和存储过程的名称由一系列的字符集所组成。orcale对这些组成标识符的字符集有一定的规范和要求。

  1. 单行注释
    单行注释由两个连接字符’–'开始,后面紧跟注释内容
  2. 多行注释
    多行注释由/*开头,由 */结尾
    eg:编写一段PL/SQL代码并未主要代码写上单行或多行注释
 set serveroutput on
> DECLARE
> num_sal number;     -- 声明一个数值变量用来存储工资
> var_name varchar2(20);    /*声明一个字符串变量*/
> begin
> select name,sal into var_name,num_sal from emp
> where empno = 7369;
> dbms_output.put_line('员工'||var_name||'的工资是'||num_sal);
> end;
  1. 字符集
    PL/SQL合法的字符集有以下内容
  2. 大写和小写字母: A~Z, a ~ z
  3. 数字: 0-9
  4. 非显示的字符: 制表符、空格、回车
  5. 数学符号:+, - ,* ,/ ,> , < , = 等
  6. 间隔符 : () ,{} ,? ,! ,; < , : @ # % $ & 等

三、数据类型与定义变量和常量

  1. 基本数据类型我们用一张图来说明
    在这里插入图片描述
  2. 特殊数据类型
    1. %TYPE类型
      使用%TYPE类型可以声明一个与指定列相同的数据类型
      eg:使用%TYPE类型的变量输出emp表中编号为7396员工的名称和职务信息。
DECLARE
var_job emp.job%type;
var_ename emp.ename%type;
begin
select ename,job into var_ename,var_job from emp
where empno = 7396;
dbms_output.put_line(var_ename||'的职务是'||var_job);
end;


  1. RECORD类型
    RECORD类型也叫记录类型,存储由多个列存储的一行记录,在声明record变量之前,首先需要定义记录类型, 记录类型是一种结构化的数据类型。语法格式如下
type record_type is record -- record_type  -- 定义记录类型名称
(
var_number1 data_type[not null] [:= defaut_value], --var_number1 表示记录类型的成员变量名称 
var_number2 data_type[not null] [:= defaut_value],--data_type成员变量的数据类型

)

eg:声明一个记录类型,然后使用该类型的变量存储emp表的一条记录信息,并输出这条信息

set serveroutput on
DECLARE
type record_emp is record
(
var_ename varchar2(20),
var_job varchar2(20),
var_sal number
);
empinfo record_emp;
begin
 select ename,job,sal into empinfo from emp
 where empno = 7369;
 dbms_output.put_line('雇员'||empinfo.var_ename||'职务为'||empinfo.job||'薪资'||empinfo.sal);
 end;
  1. %ROWTYPE类型
    用来存储从数据表中检索到的一行数据,语法形式如下
rowVAR_name table_name%rowtype;--rowVAR_name --可以存储一行数据的变量名
-- table_name指定的表名

eg:声明一个%ROWTYPE类型的变量rowVar_emp 然后使用rowVar_emp 变量来存储emp表的一行数据

set serveroutput on
DECLARE
rowVar_emp  emp%rowtype;
begin
select * 
into rowVar_emp
from emp 
where empno = 7369;
dbms_output.put_line('雇员'||rowVar_emp.ename||'职务为'||rowVar_emp.job||'薪资'||rowVar_emp .sal);
end;
  1. 定义变量
<变量名> <数据类型> [(长度):=<初始值>];
var_ename Varchar2(20) := 'SALE';
var_num  number;
  1. 定义常量
<常量名> constant<数据类型> := <常量值>
con_day constant integer := 365;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值