PL/SQL语句 (变量的声明 和引用 ,loop循环 ,if判断 ,游标)

1.变量的声明和引用

declare
    i number(2) := 10 ; -- 声明变量i := 为赋值
    s varchar2(10) := '小明';
    ena scott.emp.ename%type; --引用行变量 (引用emp表的ename设置属性)
    emprow scott.emp%rowtype; --记录行变量(使用emp的数据结构)
begin
  
    dbms_output.put_line(i);
    dbms_output.put_line(s);
    select ename  into ena from scott.emp where empno = 7788 ; --根据empno查询emop中的ename赋值ena 
    dbms_output.put_line(ena);--输出赋值后的ena
    select *  into emprow from scott.emp where empno = 7788 ; --根据empno查询emop表赋值emprow
    dbms_output.put_line('姓名:' || emprow.ename ||'工作是'||emprow.job );--输出赋值后的ena
end;

2.-- if判断

–输入数字 判断年龄范围
–小于18未成年
–大于18小于40中年人
–大于40老年人

declare
      age number(3) := &age; -- & 设置输入值
begin
      if age<18 then
      dbms_output.put_line('未成年');
      elsif age<40 then
       dbms_output.put_line('中成人');
      else
       dbms_output.put_line('老年人');
      end if ;
      
end;

–loop 循环

	--输出1-10 (三种方式)
	--while循环
declare
         i number(2) := 1;
begin
         while i<11 loop 
            dbms_output.put_line(i); 
            i:=i+1;   
         end loop ;
end;

----loop循环

declare
         i number(2) := 1 ;
         
begin
          loop 
           exit when i >10; -- 循环条件
             dbms_output.put_line(i); 
            i:=i+1; 
          
          end loop ;
end;

---- for 循环

declare 
   
begin
   for i in 1..10 loop 
    dbms_output.put_line(i); 
   end loop ;
end;

–游标 :存放多个对象,多行记录

–输出emp表的所有员工的名称

declare
    cursor c1 is select * from scott.emp ;
    emprow scott.emp%rowtype;
begin
    open c1 ; -- 打开游标
        loop
           fetch c1 into emprow;--将c1查询出来的值放入emprow
           exit when c1%notfound; --循环条件 查询不到值时结束
            dbms_output.put_line(emprow.ename); 
        end loop;
    
    close c1 ; -- 关闭游标
end ;

–给指定部门员工涨工资

declare
     cursor c2(en scott.emp.deptno%type) 
     is select empno from scott.emp where deptno = en  ; --查询指定部门 的empno 
     na scott.emp.empno%type;
begin
 open c2(10) ; -- 打开游标 放入指定部门的部门编号
        loop
           fetch c2 into na; -- 查询的值放入 na 中
           exit when c2%notfound; --循环条件 查询不到值时结束
            update scott.emp set sal = sal+100 where empno = na ; --更新empno=na的工资 加100
            commit;
        end loop;
    
    close c2 ; -- 关闭游标
end;

你可能感兴趣的:(oracle)