代码段
i:=10 赋值;
declare 声明;
dbms_output.put_line() 输出;
表名.列名%type 列类型 获取当前表的字段的类型
%rowtype 行类型 获取当前表的行类型;
into 将字段的属性赋值给自定义的变量
&请输入 用户手动输入 例如:i:=&请输入;
--代**码段格式
/*
声明区域
定义的变量
begin 代码段开始
具体要执行的代码
end; 代码段结束
*/
--声明一段代码块,输出属性
declare i number;--声明的变量
begin
i:=10;--变量赋值
dbms_output.put_line(i);--输出变量
end;
--查询emp表中编号等于7788的员工的姓名
declare sid number;
myname emp.ename%type;--定义接收员工姓名的变量 emp.ename%type 列类型 类型由数据库中列字段的类型决定
begin
sid:=7788;
-- into 赋值
select ename into myname from emp where empno=sid;
dbms_output.put_line('员工姓名:'||myename);
end;
--查询emp表中编号等下7788的一条数据
declare sid number;
myrow emp%rowtype;--行类型 获取当前行的类型
begin
sid:=7788;
select * into myrow from emp where empno=sid;
dbms_output.put_line('姓名是:'||myrow.ename||',工资是:'||myrow.sal||',工作是:'||myrow.job);
end;
循环
--循环输出1-100的数字
declare i number;--声明初始数字
begin
i:=1;--属性初始化
<<bb>>--循环的标记 标记循环的开始
loop--真正的循环开始
dbms_output.put_line(i);
i:=i+1;
exit bb when i=101;--循环结束的条件
end loop;--循环结束
end;
--while循环
--循环计算1到100的和
declare i number;
mysum number;
begin
i:=1;
mysum:=0;
while i<=100 loop --i<=100循环结束的条件
mysum:=mysum+i;--和累加
i:=i+1;
end loop;
dbms_output.put_line(mysum);
end;
--for循环
--循环计算1到100的和
declare mysum number;
begin
mysum:=0;
for i in 1..100 loop --从1开始循环到100 每次增长1
mysum:=mysum+i;
end loop;
dbms_output.put_line(mysum);
end;
条件结构
--条件结构
declare sid number;
mystr varchar2(20);
begin
sid:=7788;
select sal into mystr from emp where empno=sid;
if mystr>=3000 then --if工资大于3000,就输出工资还行
dbms_output.put_line('工资还行');
elsif mystr<2000 then--如果工资小于2000,就输出工资不行
dbms_output.put_line('工资不行');
else --否则就输出你有工资吗?
dbms_output.put_line('你有工资吗?');
end if;
end;
分支结构
--分支结构
declare sid number;
mystr varchar2(20);
begin
sid:=7788;
select sal into mystr from emp where empno=sid;
--如果工资等于5000 就输出工资还行 等于3000就工资不行 等于2000就没有工资
case mystr when 5000 then dbms_output.put_line('工资还行');
when 3000 then dbms_output.put_line('工资不行');
when 2000 then dbms_output.put_line('没有工资');
end case;--结束分支
end;
Oracle中的异常处理
--捕捉异常
declare str emp%rowtype;
begin
select * into str from emp;
dbms_output.put_line(str.ename);
--捕捉错误 too_many_rows行太多错误 因为你是一个行类型的,行类型里面只能放一行
exception when too_many_rows then
dbms_output.put_line('行太多');
end;
--自定义异常
declare sid number;
mysal number;
iee exception;--自定义一个异常 iee异常名
begin
sid:=7788;
select sal into mysal from emp where empno=sid;
if mysal>=3000 then
dbms_output.put_line('还行');
elsif mysal<2000 then
dbms_output.put_line('不好');
else
--不满足以上条件,进了else就抛出一个异常
raise iee;
end if;
exception when iee then
dbms_output.put_line('嘻嘻嘻嘻嘻嘻,苹果醋');
end;
函数
--函数 相当于java中定义好的方法 自定义的函数
--查询工资 然后判断工资如果高于3500 返回'还行'
create or replace function f_test1(sid number) --or replace如果有此函数就替换,没有就新增
return varchar2--返回值
is--声明的变量
mysal emp.sal%type;
str varchar2(20);
begin
select sal into mysal from emp where empno=sid;
if mysal>=3000 then
str:='还行';
elsif mysal<200 then
str:='不好';
else
str:='来来来';
end if;
return str;
end;
--调用函数的方式
--1.直接调用
select f_test1(7788) from dual;
--2.代码块中调用
declare sid number;
str varchar2(20);
begin
sid:=7788;
str:=f_test1(sid);
dbms_output.put_line(str);
end;