• oracle--存储过程--bai


    --1 无入参最简单的存储过程
    
    create or replace procedure hello_proc
     as
       v_name varchar2(20);
       v_age number;
     begin
       v_name:='bai';
       v_age:=18;
    
       dbms_output.put_line('你好'||v_name||',你今年'||v_age);
     end;
    
    
    --在plsql中调用
    begin
    hello_proc;
    end;
    
    /* 在command窗下运行
    set serverout on;
    exec system.hello_proc;
    */
    
    --练习1
    create or replace procedure show_sum_proc
    as
     v_i number:='1';
     v_sum number:='0';
    begin
      loop
        v_sum:=v_sum+v_i;
        v_i:=v_i+1;  
        exit when v_i=201;  
      end loop;
       dbms_output.put_line(v_sum);
    end;
    
    
    
    --2 有入参的存储过程
    create or replace procedure show_add_result
    (
      i number default 10,   --默认值
      j number default 20
    )
    as
     v_result number;
    begin
     v_result :=i+j;
     dbms_output.put_line(i||'+'||j||'='||v_result);
    end;
    
    
    begin
      show_add_result('2');
    end;
    
    select * from scott.emp;
    --经典例子
      显示指定工号的员工姓名和工资,如果没有,则输出该员工不存在
      
    create or replace procedure show_emp_by_eno_proc
    (
      v_eno scott.emp.empno%type:='7369'
    )
    as
    v_ename varchar(20);
    v_sal number;
    begin
      select ename,sal into v_ename,v_sal from scott.emp where empno=v_eno;
    
      dbms_output.put_line(v_eno||'对应的员工名'||v_ename||',工资'||v_sal);
     exception
      when no_data_found then
      dbms_output.put_line('找不到'||v_eno||'对应的员工');
    end;
    
    create or replace procedure show_emp_by_eno_proc
    as
    begin
       dbms_output.put_line('测试重载');
    end;
    
    begin
       show_emp_by_eno_proc();
    end;
    
    --根据姓名查找员工
    create or replace procedure show_emp_by_ename_proc
    (
      v_ename varchar2
    )
    as
    v_sal number;
    begin
      select sal into v_sal from scott.emp where ename=v_ename;
      dbms_output.put_line(v_ename||'对应的员工工资'||v_sal);
     exception
      when no_data_found then
      dbms_output.put_line('找不到'||v_ename||'对应的员工');
      when too_many_rows then
      dbms_output.put_line(v_ename||'对应的员工超过1个');
      when others then
        dbms_output.put_line('查找过程出现异常!');
    end;
    
    ---
    create or replace procedure show_dname_by_eno_depno
    (
      v_depno scott.dept.deptno%type
    )
    as
    v_dname varchar(20);
    begin
      select dname into v_dname from scott.dept where deptno = v_depno;
    
      dbms_output.put_line(v_depno||'对应的部门名'||v_dname);
     exception
      when no_data_found then
      dbms_output.put_line('找不到'||v_depno||'对应的部门');
    end;
    
    
    --3 有入参,有出参的存储过程
    输入i,j,用result出参获得相加的结果
    create or replace procedure get_add_result_proc(
      i number,
      j number,
      result out number   --指定result为出参
    )
    as
    begin
      result:=i+j;
    end;
    
    
    --使用plsql调用存储过程
    declare
     result number;
    begin  
       get_add_result_proc('1','2',result);   
       dbms_output.put_line(result);
    end;
    
    --创建存储过程,获得当前的日期和星期几
    create or replace procedure get_date_and_day
    (
       v_date out varchar2 ,
       v_day out varchar2 
    )
    as
    begin
      select to_char(sysdate,'dd'),to_char(sysdate,'day')  into v_date,v_day from dual;
    end;
    

      

  • 相关阅读:
    hdu 1030 Delta-wave
    POJ 1061 青蛙的约会(拓展欧几里得)
    How Many Zeroes? LightOJ
    HDU
    A
    mysql中函数cast使用
    Django基础08篇 filter&tag
    Django基础07篇 ORM操作
    Django基础06篇 分页
    Django 基础05篇 上下文管理和前端代码复用
  • 原文地址:https://www.cnblogs.com/ipetergo/p/6257558.html
Copyright © 2020-2023  润新知