zoukankan      html  css  js  c++  java
  • Oracle存储过程的调用(返回参数)

    CREATE OR REPLACE PROCEDURE test_in_out_exception (v_empno VARCHAR2,v_guess_sal NUMBER,v_true_sal OUT NUMBER)
    AS
       v_exits   VARCHAR2 (20);
       v_sal     emp.sal%TYPE;
       v_raise EXCEPTION;
    BEGIN
       SELECT   COUNT (1)
         INTO   v_exits
         FROM   emp t
        WHERE   t.empno = v_empno;
    
       IF (v_exits > 0)
       THEN
          SELECT   t.sal
            INTO   v_sal
            FROM   emp t
           WHERE   t.empno = v_empno;
           v_true_sal :=  v_sal;
          IF (v_sal > v_guess_sal)
          THEN
             DBMS_OUTPUT.Put_line ('猜大了');
          ELSIF (v_sal < v_guess_sal)
          THEN
             DBMS_OUTPUT.Put_line ('猜小了');
          ELSIF (v_sal = v_guess_sal)
          THEN
             DBMS_OUTPUT.Put_line ('猜中了');
          END IF;
       ELSE
          RAISE v_raise;
       END IF;
    EXCEPTION
       WHEN v_raise
       THEN
          RAISE_APPLICATION_ERROR (-20010, 'v_empno not exists!');
       WHEN NO_DATA_FOUND
       THEN
          RAISE_APPLICATION_ERROR (-20011, 'ERROR:不存在!');
       WHEN OTHERS
       THEN
          ROLLBACK;
    END;

    Java 代码

            try {
                // 创建存储过程的对象
                CallableStatement c = conn.prepareCall("{call test_in_out_exception(?,?,?)}");
    
                // 给存储过程的第一个参数设置值
                c.setString(1, "7369");// 7369结果是 800    736900结果是 报错
                c.setInt(2, 24);
                // 注册存储过程的第二个参数
                c.registerOutParameter(3, java.sql.Types.INTEGER);
                // 执行存储过程
                c.execute();
                // 得到存储过程的输出参数值
                System.out.println(c.getInt(3));
            } catch (SQLException e) {
                System.out.println("SQLState : " + e.getSQLState());
                System.out.println("ErrorCode : " + e.getErrorCode());
                System.out.println("Message : " + e.getMessage());
                System.out.println("LocalizedMessage : " + e.getLocalizedMessage());
                //e.printStackTrace();
            } finally {
                conn.close();
            }

     表是数据oracle 的 scott  用户 默认的表

  • 相关阅读:
    3.8 java基础总结①多线程
    RPM Database 实战详解
    关于CentOS7.2 控制面板不显示输入法,或者无法调出输入的问题。(已解决)
    mysqldump
    一些有意思的Linux命令
    和docket的第一次亲密接触
    centos7根分区扩容(亲测有效)
    相识mongodb
    开机自动获取spark用户名和服务器
    Puppet日常总结
  • 原文地址:https://www.cnblogs.com/opaljc/p/3367906.html
Copyright © 2011-2022 走看看