• PLSQL过程创建和调用


    存储过程

    创建过程范例

    create or replace procedure pro_kingsql_p1(

    p_one in varchar2,--可以传入参数

    p_two out varchar2,--可以返回值

    p_three in out varchar2)--既可以传入参数,又可以返回值

    is

    begin

    dbms_output.put_line('parameter: '||'p_one: '||p_one ||'p_two: '||p_two  ||',p_three:'||p_three);

    end;

    /

    set serveroutput on

    declare

    two varchar2(20):='zhuohui';

    three varchar2(20):='hong';

    begin

    pro_kingsql_p1('kingsql',two,three);

    end;

    /

    parameter: p_one: kingsql p_two: ,p_three:hong

    PL/SQL procedure successfully completed.

    declare

    begin

    pro_kingsql_p1('kingsql','KINGSQL2','KINGSQL3');

    end;

    /

    pro_kingsql_p1('kingsql','KINGSQL2','KINGSQL3');

                             *

    ERROR at line 3:

    ORA-06550: line 3, column 26:

    PLS-00363: expression 'KINGSQL2' cannot be used as an assignment target

    ORA-06550: line 3, column 37:

    PLS-00363: expression 'KINGSQL3' cannot be used as an assignment target

    ORA-06550: line 3, column 1:

    PL/SQL: Statement ignored

    wpsB182.tmp

    create or replace procedure pro_kingsql_p1(

    p_one in varchar2,--可以传入参数

    p_two out varchar2,--可以返回值

    p_three in out varchar2--既可以传入参数,也可以返回值

    )is

    two_a varchar2(20):='haha';

    begin

    p_two:=two_a;--twoa变量赋给p_two参数.

    dbms_output.put_line('parameter: '||p_one ||',p_two: '||p_two ||',p_three: '||p_three);

    end;

    /

    ~

    SQL> set serveroutput on

    SQL> declare

      2  two varchar2(20):='zhuohui';

      3  three varchar2(20):='hong';

      4  begin

      5  pro_kingsql_p1('kingsql',two,three);

      6  end;

      7  /

    parameter: kingsql,p_two: haha,p_three: hong

    PL/SQL procedure successfully completed.

    OUT、IN OUT不能设置默认值

    create or replace procedure pro_kingsql_p1(

    p_one in varchar2,

    p_two out varchar2,

    p_three in out varchar2 default kingsql3)

    is

    begin

    dbms_output.put_line('parameter: '||'p_one: '||p_one ||'p_two: '||p_two ||',p_three:'||p_three);

    end;

    /

    会报错

    过程调用

    create or replace procedure pro_kingsql_p2(

    v_001 in varchar2,

    v_002 out varchar2,

    v_003 out varchar2)

    is

    zhuohui varchar2(100):='zhuohui';

    hong varchar2(100):='hong';

    begin

    v_002:=zhuohui;

    v_003:=hong;

    dbms_output.put_line(v_001||'tel:13820305037');

    pro_kingsql_p1(v_001,v_002,v_003);

    end;

    /

    declare

    two varchar2(20):='hehe';

    three varchar2(20):='gaga';

    begin

    pro_kingsql_p2('kingsql',two,three);

    end;

    /

    删除过程

    DROP PROCEDURE 过程名

    比较存储过程和函数

    过程:执行一个PL/SQL语句,在头部不包含RETURN语句,可以返回多个值,不包含RETURN语句

    函数:作为表达式的一部分调用,在头部必须包含一个RETURN字句,必须返回一个单个的值,必须包含至少一个RETURN语句

    写一个输出工资等级的过程

    create or replace procedure pro_emp_02(

    v_eno emp.empno%type)

    is

    v_ename emp.ename%type;

    v_sal emp.sal%type;

    begin

    select ename,sal into v_ename,v_sal from emp where empno=v_eno;

    case

    when v_sal between 0 and 2000 then

    dbms_output.put_line(v_ename||'每个月赚'||v_sal||'小意思');

    when v_sal between 2001 and 5000 then

    dbms_output.put_line(v_ename||'每个月赚'||v_sal||'中等意思');

    when v_sal>5000 then

    dbms_output.put_line(v_ename||'每个月赚'||v_sal||'开始有意思');

    else

    dbms_output.put_line(v_ename||'每个月赚'||v_sal||'小意思');

    end case;

    end pro_emp_02;

    /

    execute pro_emp_02(7788);

    SCOTT每个月赚3000中等意思

    写一个显示年薪的过程

    create or replace procedure pro_emp_01(

    v_eno in emp.empno%TYPE)

    is

    v_ename emp.ename%TYPE;

    v_sal emp.sal%TYPE;

    begin

    select ename,sal into v_ename,v_sal from emp where empno=v_eno;

    dbms_output.put_line(v_ename||'''s annual salary is'||v_sal*12);

    end pro_emp_01;

    /

    Execute pro_emp_01(7566);

    JONES's annual salary is35700

  • 相关阅读:
    关于View的onMeasure()、onSizeChanged()、onLayout()、onDraw()调用顺序
    Android事件分发机制完全解析,带你从源码的角度彻底理解(上)
    Android事件分发机制完全解析,带你从源码的角度彻底理解(下)
    自定义View经常重写的方法
    为自己的自定义View添加额外属性
    自定义View常用的获取宽高信息
    用工厂流水线的方式来理解 RxJava 的概念
    发布开源项目到Maven 中心仓库
    Android应用架构之Retrofit使用
    docker新手入门(基本命令以及介绍)
  • 原文地址:https://www.cnblogs.com/kawashibara/p/9047403.html
Copyright © 2020-2023  润新知