Oracle 相关基础2-plsql中的查询


— 关于查询 —
— 在plsql中,查询方式不在之前的 select 字段 ,… from 表;
— 查询的语法格式
— 在plsql中处理的基本上全是变量
— 变量只能一次接收一个值 ,只能处理单个值或者是单行的数据

语法:
   declare
     变量 类型(手动,%type,记录类型,%rowtype)
   begin
     select 字段  into 变量 from 表;
   end ;

— 例1.查询emp表中员工姓名
— ORA-01422: 实际返回的行数超出请求的行数
declare
  v_ename varchar2(30);
begin
select ename into v_ename from scott.emp e ;
end ;

— 例2.查询emp表中员工姓名
declare
  v_ename varchar2(30);
begin
  select ename into v_ename from scott.emp e where empno = 7788;
  dbms_output.put_line(v_ename);  
end;

— 例3.查询emp表中7369的员工姓名,员工编号,工作,并打印输出员工姓名,员工编号,工作
declare
  v_empno varchar2(30);
  v_ename emp.ename%type;
  v_job   emp.job%type;
begin
   select empno,ename,job into v_empno,v_ename,v_job from emp where empno = 7369;
   dbms_output.put_line(v_empno);
end ;

— 例4.查询emp表员工编号为 7788 的员工姓名,员工编号,工作,部门编号
declare
  v_empno        emp.empno%type;    
  v_ename        emp.ename%type;
  v_job          emp.job%type;
  v_mgr          emp.mgr%type;
  v_hiredate     emp.hiredate%type;
  v_sal          emp.sal%type;
  v_comm         empcomm%type;
begin
   select empno, ename, job, mgr, hiredate, sal, comm
     into v_empno,v_ename,v_job,v_mgr,v_hiredate,v_sal,v_comm
     from emp
    where empno = 7788;
   
    dbms_output.put_line(v_empno || ‘ ‘ || v_ename);  
end ;

— 改用 记录类型的方式  
declare
   type rec_emp is record (
      v_empno        emp.empno%type,    
      v_ename        emp.ename%type,
      v_job          emp.job%type,
      v_mgr          emp.mgr%type,
      v_hiredate     emp.hiredate%type,
      v_sal          emp.sal%type,
      v_comm         emp.comm%type
);
v_emp rec_emp;
begin
   select empno, ename, job, mgr, hiredate, sal, comm
     into v_emp — 此时只需要声明的变量即可
     from emp
    where empno = 7788;
    dbms_output.put_line(‘员工编号是:’ || v_emp.v_empno || v_emp.v_job );  

end ;

— 例5.%rowtype ,查询emp表中员工编号为7521的员工信息
declare
  v_emp emp%rowtype ;
begin
  select * into v_emp from emp where empno = 7521 ;
  dbms_output.put_line(concat(v_emp.empno ,v_emp.ename) || v_emp.job) ;
end ;

— 例6.查询emp表中员工编号为 7698 的员工姓名,员工工作,员工部门
declare
  v_ename  dept.dname%type;
  v_job    emp.job%type;
  v_deptno number;
begin
  select ename, job, deptno
    into v_ename, v_job, v_deptno
    from scott.emp e
   where empno = ‘7698’;
   dbms_output.put_line(‘员工姓名’ || ‘,’ || v_ename || ‘,’ || ‘员工工作:’ || v_job );                
end;

— 例7.查询emp表中员工信息
/*
ORA-01422: 实际返回的行数超出请求的行数
ORA-06512: 在 line 5
*/
declare
  v_emp emp%rowtype ;
begin
  select * into v_emp from emp;
  dbms_output.put_line(v_emp.empno);  
end ;

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/279000.html

(0)
上一篇 2022年8月5日
下一篇 2022年8月5日

相关推荐

发表回复

登录后才能评论