存储过程

-- 声明一个人的信息,姓名、薪水、地址
declare 
  -- Local variables here
  -- 姓名
  v_name varchar2(50) := '张三';
  --薪水
  v_sal number(11,2);
  --地址
  v_addr varchar2(200);
  
begin
  -- 直接赋值
  v_sal := 15800;
  -- 语句赋值
  select '上海传智博客' INTO v_addr FROM dual;
  
  --打印变量
  dbms_output.put_line('姓名:' || v_name || ',薪水:' || v_sal);
  dbms_output.put_line('地址:' || v_addr);
end;

  

002:引用变量(表中数据列对应声明的变量)
-- 查询emp表中8192号员工的个人信息,打印姓名和薪水 
declare 
  -- 姓名
  v_ename emp.ename%type;
  --薪水
  v_sal  emp.sal%type;
begin
  -- 查询姓名和薪水赋值给变量
  select ename,sal into v_ename,v_sal from emp where empno=8192;
  dbms_output.put_line('姓名:' || v_ename || ',薪水:' || v_sal);
end;

  

003:记录型变量(表中一行数据)
-- 查询emp表中8192号员工的个人信息,打印姓名和薪水
declare 
 --记录型变量
 v_emp emp%rowtype;
begin
 --查询
 select * into v_emp from emp where empno=8192;
 --打印
 dbms_output.put_line('姓名:'||v_emp.ename || ',薪水:' || v_emp.sal);
end;

  

004:if与elsif

-- 查询emp表中记录是否超过20条,10-20之间,或者10条以下
declare 
  -- 声明变量接收emp表中的记录数
 v_count number;
begin
 select count(1) into v_count from emp;
 
 if v_count>20 then 
    dbms_output.put_line('emp表的记录数超过20条:'||v_count);
    
    ELSIF v_count>=10 then
      dbms_output.put_line('emp表的记录数在10-20之间:'||v_count);
     
    ELSE
      dbms_output.put_line('emp表的记录数在10条以下:' || v_count);
 end if;
end;

  

005:LOOP(循环)

--打印数字1-10
declare 
  -- -声明一个循环变量
  v_num number := 1;
begin
  loop
      exit when v_num>10;
      dbms_output.put_line(v_num);
      --循环变量的自增长
      v_num:=v_num+1;
  end loop;
  
end;

  

原文地址:https://www.cnblogs.com/yuefeng123/p/9281797.html