Oracle匿名块

来源:互联网 发布:雪橇三傻 知乎 编辑:程序博客网 时间:2024/05/22 15:46
--输出编号3500的员工的姓名和职务
select * from emp;
--匿名块
--1
declare
  v_ename varchar2(20);
  v_job varchar2(20);
begin
  select ename,job into v_ename,v_job fromemp;
  exception
   when others then
     selectename,job into v_ename,v_job from emp where empno=7369;   
  v_ename := '哈哈' || v_ename;                         
  dbms_output.put_line(v_ename || '-------'|| v_job);
end;
--2
declare
  v_ename varchar2(20);
  v_job varchar2(20);
  --给变量赋初值的方法
  v_num number(5) := 10;
begin
  select ename,job into v_ename,v_job fromemp;
  exception
   when others then
     selectename,job into v_ename,v_job from emp where empno=7369;  
  --给字段加拼接内容
  v_ename := '哈哈' || v_ename || '哈哈';  
  --输出语句                      
  dbms_output.put_line(v_num || ':' ||v_ename || '-------' || v_job);
end;

--3
declare
  v_ename varchar2(20);
  v_job varchar2(20);
  --给变量赋初值的方法
  v_num number(5) := 10;
begin
  select ename,job into v_ename,v_job fromemp;
  exception
   when others then
     selectename,job into v_ename,v_job from emp where empno=7369;  
  --给字段加拼接内容
  v_ename := '哈哈' || v_ename || '哈哈';  
  --输出语句                      
  dbms_output.put_line(v_num || ':' ||v_ename || '-------' || v_job);
  --判断控制语句--选择流程
  if v_job='CLERK' then
    dbms_output.put_line('程序员==程序猿');
  else
    dbms_output.put_line('程序员!=程序猿');    
  end if;
end;


--4
declare
  v_ename varchar2(20);
  v_job varchar2(20);
  --给变量赋初值的方法
  v_num number(5) := 1;
begin
  select ename,job into v_ename,v_job fromemp;
  exception
   when others then
     selectename,job into v_ename,v_job from emp where empno=7369;  
  --给字段加拼接内容
  v_ename := '哈哈' || v_ename || '哈哈';  
  --输出语句                      
  dbms_output.put_line(v_num || ':' ||v_ename || '-------' || v_job);
  --判断控制语句--选择流程
  if v_job='CLERK' then
    dbms_output.put_line('程序员==程序猿');
  else
    dbms_output.put_line('程序员!=程序猿');    
  end if;
 dbms_output.put_line('--------------------------');
  --循环流程
  loop 
    dbms_output.put_line(v_num);
     v_num:= v_num+1;    
     --表示当v_num=10 的时候结束循环 
     exitwhen v_num=10;
  end loop;
 dbms_output.put_line('--------------------------');    
end;


--5
declare
  v_ename varchar2(20);
  v_job varchar2(20);
  --给变量赋初值的方法
  v_num number(5) := 1;
  v_i number;
begin
  select ename,job into v_ename,v_job fromemp;
  exception
   when others then
     selectename,job into v_ename,v_job from emp where empno=7369;  
  --给字段加拼接内容
  v_ename := '哈哈' || v_ename || '哈哈';  
  --输出语句 
 dbms_output.put_line('------------普通查询--------------------');                     
  dbms_output.put_line(v_num || ':' ||v_ename || '-------' || v_job);
  --判断控制语句--选择流程
 dbms_output.put_line('------------选择流程--------------------');
  if v_job='CLERK' then
    dbms_output.put_line('程序员==程序猿');
  else
    dbms_output.put_line('程序员!=程序猿');    
  end if;
 dbms_output.put_line('-------------普通循环--------------------');
  --循环流程
  loop 
    dbms_output.put_line(v_num);
     v_num:= v_num+1;    
     --表示当v_num=10 的时候结束循环 
     exitwhen v_num=10;
  end loop;
 dbms_output.put_line('------------for循环--------------');  
  --v_i:表示定义一个int类型的变量 i;1..10:表示i的双闭区间的取值范围(注意此处的格式,没有end for;标记; reverse:表示倒序输出)
  for v_i in reverse 1..10
    loop
     dbms_output.put_line(v_i);     
    end loop;   
end;

--6
declare
  --构造新类型
  type emp_entity_type is record(
      ena emp.ename%type,
      eno emp.empno%type
  );
  v_ename varchar2(20);
  v_job varchar2(20);
  --给变量赋初值的方法
  v_num number(5) := 1;
  v_i number;
  emp_entity emp_entity_type;
begin
  select ename,job into v_ename,v_job fromemp;
  exception
   when others then
     selectename,job into v_ename,v_job from emp where empno=7369;  
  --给字段加拼接内容
  v_ename := '哈哈' || v_ename || '哈哈';  
  --输出语句 
 dbms_output.put_line('------------普通查询--------------------');                     
  dbms_output.put_line(v_num || ':' ||v_ename || '-------' || v_job);
  --判断控制语句--选择流程
 dbms_output.put_line('------------选择流程--------------------');
  if v_job='CLERK' then
    dbms_output.put_line('程序员==程序猿');
  else
    dbms_output.put_line('程序员!=程序猿');    
  end if;
 dbms_output.put_line('-------------普通循环--------------------');
  --循环流程
  loop 
    dbms_output.put_line(v_num);
     v_num:= v_num+1;    
     --表示当v_num=10 的时候结束循环 
     exitwhen v_num=10;
  end loop;
 dbms_output.put_line('------------for循环--------------');  
  --v_i:表示定义一个int类型的变量 i;1..10:表示i的双闭区间的取值范围(注意此处的格式,没有end for;标记; reverse:表示倒序输出)
  for v_i in reverse 1..10
    loop
     dbms_output.put_line(v_i);     
    end loop;   
 dbms_output.put_line('------------自定义类型的查询--------------');  
  select ename,empno intoemp_entity.ena,emp_entity.eno from emp where empno=7369;
  dbms_output.put_line(emp_entity.ena ||'---' || emp_entity.eno);  
end;


原创粉丝点击