PL/SQL编程(一)
一:pl/sql基础
1:PL/SQL是oracle在标准sql语言上进行的过程性扩展后形成的程序设计语言.他不仅可以使用
嵌套的sql而且还充许自定义各种变量,并使用程序实现各种操作.
2:pl/sql 的基本结构:
declare--可省
--变量定义部分
begin--不可省
--语句快部分
exception--可省
--异常处理部分
end;--不可省
3:标量变量的定义 标量有varchar2等9种
定义语句: va varchar2(20);--定义了一个varchar2类型的变量va,其长度为20;
4:参照变量 --定义一个变量参照其他已有的类型
定义语句一: va emp.ename%type --定义了一个变量va,他的类型与emp表中的ename的类型一样
定义语句二: va emp%rowtype--定义了一个变量va,他的类型与表emp表的行属性完全一样,他可以
--存多个数据.
5:在pl/sql语中使用select语句一定要定义一个变量并使用select..into..语句给其赋值
--这个程序是会报错的,因为其没有给变量赋值
begin
select ename from emp where mgr is null;
end;
--修改如下:
declare
va emp.ename%type;
begin
select ename into va from emp where mgr is null;
dbms_output.put_line(va);
end;
6:使用记录record来接收数据.记录record是一种复合数据类型.
--record 定义如下
declare
type my_record is record --定义了一个包含一个number,一个varchar2,一个emp表中hiredate类型相同
( va1 number(8), --逗号 --date三个变量,们们组成了一个记录.
va2 varchar2(20),
va3 emp.hiredate%type
);--这里还有一个分号
va my_record;--定义一个记录变里va,va中包含了三种数据类型。
begin
select empno,ename,hiredate into va from emp where mgr is null;
dbms_output.put_line(va.va1||va.va2);--单个记录中的变量应用va.va1这种函数关系
end;
7:流程控制
<1>.if语句
第一种
if 条件 then
操作语句
end if;
第二种
if 条件 then
操作语句
elsif
操作语句
end if
第三种
if 条件 then
操作语句
else
操作语句
end if
<2>三种循环
第一种 一般循环
loop
end loop;
第二种 for 循环
for i in 1..10 loop
end loop;
第三种 where 循环
while 条件 loop
i:=i+1;
end loop;
<3>case语句]
case 属性
when 条件值 then
操作语句
when 条件值 then
操作语句
else
操作语句
end case;
8:标签的使用 --go to 与exit
begin
<<ou>>
for i in 1 .. 10 loop
dbms_output.put_line('i:' || i);
for j in 1 .. 10 loop
dbms_output.put_line('j:' || j);
exit ou when j = 5; --用exit标签必须在exit之前
end loop;
end loop;
end;
--使用goto
begin
for i in 1 .. 10 loop
dbms_output.put_line(i);
if i = 5 then
goto ou;--用goto标签必须在goto之后
end if;
end loop;
<<ou>>
null;--并且null语句块不能省
end;
二使用复合数据类型
--(1)单行单列的元素利用标量变量
va varchar2(20) --最大值为32767字节
va char(20) --最大值为32767字节
va number(n,p) --n为位数 ,p为精度,其可以省略
va date --日期数据类型
va Timestamp --亚秒时间数据类型
va Long(row) -- long 用于变长字符类型 long row 用于变长二进制 最大长度为32760字节
va Binary_integer --用于定义整型数据类型
va binary_float --用于定义单精度
va binary_double --用于定义双精度类型 以上三种数据类型表列都不能用
--使用复合数据类型
--(1)单行多列的可以用集合;集合一般分为三种:索引表,嵌套表,varray三种形式。
--<1>索引表 索引表的下标可为负,元素个数没有限制。
declare
type v_mytype is table of emp.ename%type index by binary_integer;
v_a v_mytype;
begin
select ename into v_a(-1) from emp where mgr is null;
dbms_output.put_line(v_a(-1));
end;
-- 索引表可以用varchar2做为下标
declare
type vatype is table of varchar2(20) index by varchar2(20);
va vatype;
begin
va('南京'):='南京';
va('北京'):='北京';
va('深圳'):='深圳';
va('成都'):='成都';
dbms_output.put_line(va('南京')||' '||va('北京')||' '||va('深圳')||' '||va('成都'));
end;
--<2>嵌套表, 嵌套表的下标应该 从1 开始,其元素个数没有限制.
create or replace type my_type is table of varchar2(10); --在制表时使用嵌套表
create table qiantiao
(
tid number(5),
tname my_type
)nested table tname store as aa;
drop table qiantiao
insert into qiantiao values(1,my_type('kaka'))
select * from qiantiao
--在select语句中使用嵌套表
declare
vt my_type;
begin
select ename into vt from emp where mgr is null;
for i in 1..va.count loop
dbms_output.put_line(vt(i));</sp
分享到:
相关推荐
第一章 Oracle入门 一、 数据库概述 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前。简单来说是本身可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据...
- **15天精讲精练_Android核心技术**:快速掌握Android开发基础知识,包括UI布局、Activity生命周期、数据存储、网络通信等。 - **Android从入门到实战**:从零开始学习Android开发,最终完成一个完整的项目,巩固所...
1. **20天横扫Java基础**:适合Java初学者,通过20天的学习掌握Java基础语法。 2. **尚硅谷Java基础实战——Bank项目**:通过实际项目加深对Java基础知识的理解和应用。 3. **Oracle、SQL、PLSQL视频教程**:数据库...
通过这21天的学习计划,《在21天内自学SQL》不仅为初学者提供了全面的SQL入门指南,也为有经验的开发者提供了深化技能的机会。无论是为了个人兴趣还是职业发展,这本书都是一个宝贵的资源,旨在帮助读者在有限的时间...
- **预约时间:** 考生需要提前至少15天进行考试预约。 **报名条件:** - **个人证件要求:** 参加考试时需携带两种有效的个人证件,例如身份证和驾照、学生证或工作证等。 - **无其他限制:** 华为认证考试报名...
**Day2:查询入门——SELECT语句** - **SELECT语句**:用于从一个或多个表中检索数据。 - **基本语法**:`SELECT column1, column2 FROM table_name;` - **示例**:`SELECT name, age FROM users;` **Day3:表达式...