Oracle操作之代码段 循环 条件结构 分支结构 异常处理 函数

代码段

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;
发布了62 篇原创文章 · 获赞 6 · 访问量 2595

猜你喜欢

转载自blog.csdn.net/qq_44424498/article/details/100168971