[declare]
--声明变量
begin
-- 程序体
[exception]
--例外;异常
end;
--declare和exception部分可以没有,但是begin部分和end必须要有。
--定义变量
declare
--变量的赋值
--方式一:使用:=进行赋值;
--普通的变量
i number(10) := 1;
begin
--输出i的值到控制台中
dbms_output.put_line('i的值:'||i);
-- 对i加1 输出
i := i+1;
dbms_output.put_line('i+1的值:'||i);
end;
--定义变量
declare
--记录型变量:行类型
pemp emp%rowtype;
begin
--给行类型的变量赋值: 使用关键字 into
--方式二:使用select..into子句进行赋值;
select * into pemp from emp where empno=7369;--输出行类型变量到控制台中
dbms_output.put_line(pemp.ename||'============='||pemp.job);
end;--使用select...into子句进行赋值时,变量的数据类型要与表中字段的数据类型一致.--变量的特殊类型:--%rowtype:指定该变量与某个表的结构相同。--该类型的变量可以用来保存表的一行数据;
--定义变量
declare
--引用型变量:引用某张表的某列的类型
pname emp.ename%type;
--pname varchar2(1); --普通begin
--赋值:给引用型变量赋值
select ename into pname from emp where empno=7788;--输出
dbms_output.put_line(pname);
end;--变量的特殊类型:--%type:指定该变量的类型与表的某列的数据类型相同;
运算符
-- := 赋值运算符--普通的变量
i number(10) := 1;
-- .. 范围运算符--我插入100万条数据到person表createtable person(
id number(10) primarykey,
name varchar2(200),
gender number(1) default1
);--plsql去插入一百万条数据到person表中--介绍oracle的uuid的方法select sys_guid() from dual;--创建序列create sequence seq_test;--添加100W条记录
declare
pname varchar2(200);
beginfor i in1..1000000 loop
select sys_guid() into pname from dual;insertinto person values(seq_test.nextval,pname,1);end loop;commit;end;
while循环:
while 条件 loop--循环体endloop;
loop循环:
loopexitwhen 退出条件;
--循环体endloop;
for循环:
for 变量 in [reverse] 开始值..结束值
loop--循环体endloop;
--&val 即为控制台输入
--求1到&val的和
declare
i number(10) :=1;
val number(10):=&val;
sums number(10):=0;
beginwhile i<=val loop
sums:= sums+i;
i :=i+1;
end loop;
dbms_output.put_line(sums);
end;
declare
i number(10):=1;
val number(10):=&val;
sums number(10):=0;
begin
loop
exit when i>val;
sums:=sums+i;
i:=i+1;
end loop;
dbms_output.put_line(sums);
end;
declare
val number(10):=&val;
sums number(10):=0;
beginfor i in1..val loop
sums:=sums+i;
end loop;
dbms_output.put_line(sums);
end;
declare
i number(10);
--行类型
pemp emp%rowtype;
begin
--给i赋值
--i := 1/0;
--i := 'abc';
--模拟异常:找多条数据给行类型赋值会出现异常
select * into pemp from emp;
exception
when zero_divide then
dbms_output.put_line('分母不能为零');when value_error then
dbms_output.put_line('类型转换异常');when too_many_rows then
dbms_output.put_line('期望一条数据,但是返回多条');when others then
dbms_output.put_line('亲,有异常要处理');end;