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  用户 默认的表

Oracle存储过程的调用(返回参数)的更多相关文章

  1. Java调用oracle存储过程通过游标返回临时表数据

    注:本文来源于 <  Java调用oracle存储过程通过游标返回临时表数据   > Java调用oracle存储过程通过游标返回临时表数据 项目开发过程中,不可避免的会用到存储过程返回结 ...

  2. oracle存储过程递归调用

    oracle存储过程递归调用,如果where子句使用的是传入的参数, 在以后的递归调用中参数就是第一次调用的参数值,解决办法是定义变量,使用自定义的变量问题可以解决.

  3. Oracle存储过程的调用和执行

    1.什么是存储过程: 用于在数据库中完成特定的操作或者任务.是一个PLSQL程序块,可以永久的保存在数据库中以供其他程序调用. 2.无参存储过程的使用: Normal 0 7.8 磅 0 2 fals ...

  4. oracle 存储过程中调用存储过程

    create procedure sp_name() begin ……… end 比如: create procedure pro_showdbs() show datebase; end //用ex ...

  5. oracle存储过程jdbc调用

    package com.jckb.procedure; import java.sql.CallableStatement; import java.sql.Connection; import ja ...

  6. Oracle存储过程java 调用

    1.nest表组合成结果集,然后以游标变量的形式返回 --创建类型 create or replace package mytest is -- Author  : ADMINISTRATOR  -- ...

  7. SQL——存储过程实例 调用带参数的过程(成绩输出)

    create or replace procedure test_score(input in number,output out char) is begin then begin output : ...

  8. Oracle存储过程中调用DBLink同义词出现错误:PLS-00201: 必须声明标识符

    前几天编写一个存储过程,需要访问远程数据库的字段,于是建立一个dbLink并建了同义词: CREATE PUBLIC DATABASE LINK orcl@dbc CONNECT TO orcl ID ...

  9. ORACLE存储过程调用Web Service

    1. 概述 最近在ESB项目中,客户在各个系统之间的服务调用大多都是在oracle存储过程中进行的,本文就oracle存储过程调用web service来进行说明.其他主流数据库,比如mysql和sq ...

随机推荐

  1. EWARM STM32 向量表偏移设置

    system_stm32f2xx.c #ifdef VECT_TAB_SRAM SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table ...

  2. 语义化的HTML

    div:division(分开, 分割, 区分,分配, 分界线),标签可以把文档分割为独立的.不同的部分.作为块级元素的代表,因为没有固定的格式表现,目前滥用情况最严重.ul:Unordered Li ...

  3. css margin的相关属性,问题及应用

    by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=48 引言:margin ...

  4. IE6文字溢出BUG(多出来的猪问题)

    在IE6下使用浮动可能会出现文字重复的情况. 在IE6下,浮动层之间有注释文字的话,之前那个浮动层的内容文字就有可能遭遇一个“隐形”的复制,但是代码里查看文字可并没有多出来. 看个例子: HTML & ...

  5. SCCM 2007 R2部署、操作详解系列之概念

    站点类型 在安装站点时,您决定它将是主站点还是辅助站点.然后,在安装其他站点时,您可以选择将其安排到层次结构关系中,以便父站点管理子站点,中央站点收集所有站点信息,从而进行集中式管理.也可以根据业务和 ...

  6. C++组合问题

    求一个组合,如C(16,3),我们可以通过公式求出这有多少个数,但怎么把这些数表示出来呢? 代码: #include<iostream> #include<stdio.h> # ...

  7. JavaScript创建Map对象(转)

    JavaScript 里面本身没有map对象,用JavaScript的Array来实现Map的数据结构. /* * MAP对象,实现MAP功能 * * 接口: * size()     获取MAP元素 ...

  8. Html Agility Pack基础类介绍及运用

    第一篇只对Html Agility Pack做了一个大概的介绍,在接下来的章节会比较深入的介绍Html Agility Pack. Html Agility Pack 源码中的类大概有28个左右,其实 ...

  9. cocos2d-html5 笔记3: Node

    Cocos2d采用类似于Dom tree的那种形式来各个部分组织起来.最基本的基类是Node吧, Node Node 作为基类,函数很多,我觉得可以分为如下几类,树相关的函数, 一些公共的比较实用的函 ...

  10. DQS安装失败——系统重新引导是否处于挂起状态

    问题:         安装完SQL Server 2012后,准备安装DQS服务,但是总是提示:操作"检查系统重新引导是否处于挂起状态"已完成,但有错误,正在中止安装.非常无奈, ...