zoukankan      html  css  js  c++  java
  • 存储过程中的in out in out 三种类型的参数

    in 是参数的默认模式,这种模式就是在程序运行的时候已经具有值,在程序体中值不会改变。

    out模式定义的参数只能在过程体内部赋值,表示该参数可以将某个值传递回调用他的过程

    in out 表示高参数可以向该过程中传递值,也可以将某个值传出去

    一:在函数中:

    CREATE OR REPLACE FUNCTION get_salary(
        Dept_no NUMBER,
        Emp_count OUT NUMBER)
      RETURN NUMBER
      IS
        V_sum NUMBER;
      BEGIN
     SELECT SUM(SAL), count(*) INTO V_sum, Emp_count
     FROM EMP WHERE DEPTNO=dept_no;
     RETURN V_sum;
     EXCEPTION
     WHEN NO_DATA_FOUND THEN
           DBMS_OUTPUT.PUT_LINE('你需要的数据不存在!');
     WHEN OTHERS THEN
           DBMS_OUTPUT.PUT_LINE(SQLCODE||'---'||SQLERRM);
     END;

    调用:

    DECLARE 
       V_num NUMBER; 
       V_sum NUMBER; 
     BEGIN 
       V_sum :=get_salary(10, v_num); 
       DBMS_OUTPUT.PUT_LINE('部门号为:10的工资总和:'||v_sum||',人数为:'||v_num); 
     END;
    Dept_no参数可以直接输入。
    Emp_count OUT NUMBER   参数因为是out。所以先要声明一个变量V_num。因为函数有一个return返回。out返回的时候。直接写里面执行不了。所以定义一个变量V_sum用来接收get_salary函数的
    返回值。
    二:过程:
    create or replace procedure pro_demo_p1(  
               p_one in varchar2,--可以传入参数  
               p_two out varchar2,--可以返回值  
               p_three in out varchar2--既可以传入参数,也可以返回值  
        ) is  
        begin  
          dbms_output.put_line('参数:' || 'p_one:' || p_one || ',p_two:'||p_two || ',p_three:'||p_three);  
       end;

    调用:

    DECLARE
          TWO VARCHAR2(20):='LI';
          THREE VARCHAR2(20):='BAI';
        begin
          pro_demo_p1('one',TWO,THREE);
          end;

    p_two明明赋予了值。没有输出出来。因为是out。

     使p_two输出值。定义一个变量TWOA。然后赋给p_two。

    create or replace procedure pro_demo_p1(
               p_one in varchar2,--可以传入参数
               p_two out varchar2,--可以返回值
               p_three in out varchar2--既可以传入参数,也可以返回值
        ) is
        
        TWOA VARCHAR2(20) :='LI';
        begin
          p_two:=TWOA;   --TWOA变量赋值给p_two参数。
          dbms_output.put_line('参数:' || 'p_one:' || p_one || ',p_two:'||p_two || ',p_three:'||p_three);
          
       end;

    调用:

    DECLARE
      TWO VARCHAR2(20);--定义这两个变量作为pro_demo_p1的参数传进去
      P_THREE VARCHAR2(20):='BAI';
    BEGIN 
      pro_demo_p1('A',TWO,P_THREE);
      END;

  • 相关阅读:
    解题:POI 2008 Plot purchase
    1807. 斐波纳契数列简单
    1745. 单调数列
    1700. 增减字符串匹配
    1665. 计算数字
    1523. 分区数组
    1517. 最大子数组
    1598. 两句话中的不常见单词
    1594. 公平的糖果交换
    1510. 亲密字符串(回顾)
  • 原文地址:https://www.cnblogs.com/bulrush/p/7766608.html
Copyright © 2011-2022 走看看