PL/SQL基础学习
来源:互联网 发布:知乎专栏怎么写文章 编辑:程序博客网 时间:2024/04/30 19:53
PL/SQL块结构
DECLAER
…
BEGIN
…
EXCEPTION
…
EDN;
/
变量声明
一、 变量声明的内容
l 赋予变量适当名称
l 赋予变量正确的数据类型
l 定义变量(标准、记录)
l 控制变量范围
二、 命名规则
l 变量由字符开头
l 可以包含:数字、下划线、‘$’、‘#’等
l 变量长度范围:1~30
l 大小写不区分
l 变量名不可以是系统关键字
简单PL/SQL例子:
declare
--定义字符型数据,长度20
x varchar(20);
--定义整型数据,并且对该数据进行赋值
y integer:=123;
--定义字符串型数据,必须指定其长度
z string(20):='this is string';
begin
x:='hello world';
dbms_output.put_line('x的值:'||x||' y的值:'||y||' z的值:'||z);
/*dbms_output.put('x的值:'||x||' y的值:'||y);
dbms_output.new_line;*/
end;
/
默认情况下,oracle的输出服务是关闭的,可以通过下面的指令打开输出服务并且设置输出区的大小。
SET SERVEROUTPUT ON SIZE 10000;
上述例子中,dbms_output.put_line();为PL的库函数,用于标准输出。
“||”双竖线的作用是用来连接不同类型的数据。
如果使用dbms_output.put输出,无结果输出,必须配合使用dbms_output.new_line;才会有结果输出。最多情况使用第一种方式:put_line
“--”表示行注释 “/* */“表示块注释”。
分支语句
一、 IF分支
IF…THEN
…
ELSIF…THEN
…ELSE
…
END IF
举例:
DECLARE
A NUMBER;
B VARCHAR(10);
BEGIN
a:=2;
if a=1 then
b:='A';
elsif a=2 then
b:='B';
else
b:='C';
end if;
dbms_output.put_line(b);
end;
/
二、 CASE分支
CASE
WHEN…THEN…
ELSE
END CASE;
举例:
DECLARE
A NUMBER;
B VARCHAR(10);
BEGIN
a:=4;
case
when a=1 then b:='A';
when a=2 then b:='B';
when a=3 then b:='C';
else
b:='d';
end case;
dbms_output.put_line(b);
end;
/
循环语句
1. 基本循环(LOOP)
LOOP
…
END LOOP
使用举例:
declare
x number;
begin
x:=0;
LOOP
x:=x+1;
if x>=3 then
exit;
end if;
dbms_output.put_line('内:x='||x);
end loop;
dbms_output.put_line('外:x='||x);
end;
/
其中的判断语句可以做如下替换:exit when x>=3;
2. WHILE循环
WHILE expression LOOP
…
END LOOP;
使用举例:
declare
x number;
begin
x:=0;
while x<=3 loop
x:=x+1;
dbms_output.put_line('内x='||x);
end loop;
dbms_output.put_line('外x='||x);
end;
/
3. FOR循环
FOR counter IN[REVERSE] start_value..end_value LOOP
…
END LOOP;
使用举例:
begin
for i in 1..5 loop
dbms_output.put_line(i);
end loop;
end;
/
如for reverse i in 1..5 loop中间加入reverse,则for循环从相反的方向执行。
4. GOTO
<<sign>>
…
If…then
Goto sign;
使用举例:
declare
x number;
begin
x:=0;
<<repeat_loop>>
x:=x+1;
dbms_output.put_line(x);
if x<3 then
goto repeat_loop;
end if;
end;
/
异常处理
(一) 异常:在pl/sql中的一个警告或错误的形式都被称为异常。包括:编译时刻错误和运行时刻错误。
(二) 异常分类:系统异常、自定义异常。
系统异常使用举例:
declare
test varchar2(10);
begin
select name into test from person where id = 20;
dbms_output.put_line(test);
exception
when NO_DATA_FOUND THEN
dbms_output.put_line('找不到这样的数据!');
when others then
dbms_output.put_line(‘其他异常!’);
end;
/
当Select子句的查询结果为空的时候,将空值赋给test则会出现NO_DATA_FOUND异常。
自定义异常使用举例:
declare
tname varchar(10);
e exception;
begin
select name into tname from person where id=2;
if tname<>'ni' then
raise e;
end if;
dbms_output.put_line(tname);
exception
when e then
dbms_output.put_line('名字错误');
end;
/
自定义异常e,在出现自定义异常时,必须通过条件判断,并且使用raise语句抛出,才能在后面的exception中取得自定义异常。
下面给出一些系统预定义异常:
DUP_VAL_ON_INDEX | 向有唯一约束的表中插入重复行 |
NO_DATA_FOUND | 在一个SELECT INTO语句中无返回值 |
TOO_MANY_ROWS | SELECT INTO 语句中返回了多行 |
VALUE_ERROR | 一个算法、转换、截断或大小约束发生错误 |
ZERO_DIVIDE | 发生被零除 |
复合变量:记录
一、 什么是记录
记录是由几个相关值构成的复合变量。常用于支持SELECT语句的返回值。使用记录可以将一行数据看成一个单元进行处理,而不必每一列单独处理。
二、 记录的声明
TYPE type_name IS RECORD(
Variable_name dataType[,
Variable_name dataType[,
…
);
Real_name type_name;
记录使用举例:
Declare
--定义记录 记录名称为myrecord
type myrecord is record(
bid varchar2(10),
bname varchar2(10));
--声明一个此记录类型的变量real_record
real_record myrecord;
begin
select bid,bname into real_record from b where bid='1';
dbms_output.put_line(real_record.bid||','||real_record.bname);
end;
/
使用b.bid%type可以设定bid的类型与b表中bid字段类型相一致。
bid b.bid%type,
bname b.bname%type
记录的另外一种声明方式:
declare
myrecord person%rowtype;
begin
select * into myrecord from person where id=1;
dbms_output.put_line(myrecord.id);
end;
/
使用此方式,可以将记录的字段和类型与指定表中的每行记录的字段及其类型一致
- PL/SQL基础学习
- PL\SQL基础学习
- PL/SQL基础学习
- oracle PL/SQL基础学习
- Oracle PL/SQL基础--游标的学习
- Oracle学习笔记五:PL/SQL基础
- pl/sql学习笔记之一 语言基础
- Oracle PL/SQL基础--游标的学习
- PL/SQL学习笔记[1]-基础
- Oracle基础学习笔记(五) (PL/SQL)
- PL/SQL学习笔记[1]-基础
- SQL-PL/SQL基础
- ORACLE PL/SQL 基础
- PL/SQL基础
- PL/SQL语言基础
- PL/SQL语言基础
- PL/SQL语言基础
- ORACLE PL/SQL 基础
- SQL Server大型服务器:伸缩性、可用性与易管理性
- 说说Google Map的Mapplets
- String StringBuffer StringBuilder 三者的区别
- CListCtrl 详解
- 【.net】3des加密
- PL/SQL基础学习
- How DirectShow Decides Which Filters to Use
- 使用生成后事件(将一些文件自动放入Bin目录下面)
- Google Chrome 试用感受
- 要开始做事了
- SqlDependency 的数据库配置步骤
- ORACLE用户管理
- PL/SQL高级应用的学习1
- Spring事务学习