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 用户 默认的表
Oracle存储过程的调用(返回参数)的更多相关文章
- Java调用oracle存储过程通过游标返回临时表数据
注:本文来源于 < Java调用oracle存储过程通过游标返回临时表数据 > Java调用oracle存储过程通过游标返回临时表数据 项目开发过程中,不可避免的会用到存储过程返回结 ...
- oracle存储过程递归调用
oracle存储过程递归调用,如果where子句使用的是传入的参数, 在以后的递归调用中参数就是第一次调用的参数值,解决办法是定义变量,使用自定义的变量问题可以解决.
- Oracle存储过程的调用和执行
1.什么是存储过程: 用于在数据库中完成特定的操作或者任务.是一个PLSQL程序块,可以永久的保存在数据库中以供其他程序调用. 2.无参存储过程的使用: Normal 0 7.8 磅 0 2 fals ...
- oracle 存储过程中调用存储过程
create procedure sp_name() begin ……… end 比如: create procedure pro_showdbs() show datebase; end //用ex ...
- oracle存储过程jdbc调用
package com.jckb.procedure; import java.sql.CallableStatement; import java.sql.Connection; import ja ...
- Oracle存储过程java 调用
1.nest表组合成结果集,然后以游标变量的形式返回 --创建类型 create or replace package mytest is -- Author : ADMINISTRATOR -- ...
- SQL——存储过程实例 调用带参数的过程(成绩输出)
create or replace procedure test_score(input in number,output out char) is begin then begin output : ...
- Oracle存储过程中调用DBLink同义词出现错误:PLS-00201: 必须声明标识符
前几天编写一个存储过程,需要访问远程数据库的字段,于是建立一个dbLink并建了同义词: CREATE PUBLIC DATABASE LINK orcl@dbc CONNECT TO orcl ID ...
- ORACLE存储过程调用Web Service
1. 概述 最近在ESB项目中,客户在各个系统之间的服务调用大多都是在oracle存储过程中进行的,本文就oracle存储过程调用web service来进行说明.其他主流数据库,比如mysql和sq ...
随机推荐
- [转]Kerberos简介
Kerberos协议: Kerberos协议主要用于计算机网络的身份鉴别(Authentication), 其特点是用户只需输入一次身份验证信息就可以凭借此验证获得的票据(ticket-grantin ...
- PL SQL笔记(三)
loop then .. exit; end if; end loop; select to_char(sysdate, 'YYYY-MM-DD HH24:MI:SS') from dual; sel ...
- map 转换 xml ; xml转map
public class MessageKit { public static String map2xml(Map<String, String> map) throws IOExcep ...
- RFID Reader 线路图收集
This 125 kHz RFID reader http://www.serasidis.gr/circuits/RFID_reader/125kHz_RFID_reader.htm http:// ...
- Pgpool烂泥扶不上墙
写这篇文章,是想好心地给打算使用Pgpool的人提个醒: Pgpool 真的不适合在企业范围使用. 我的主要理由是: 设计陈旧: 一旦后台任何节点Down掉,都会引发failover,它会杀掉所有子进 ...
- PL/pgSQL RETURNS TABLE 例子
实验如下: RETURNS TABLE 中的变量名和SQL文中的变量名同名时,执行时会出错: pgsql=# create table sales(itemno integer,quantity in ...
- Update-ServiceTemplate
1: Update a service by using conventional servicing. PS C:\> $Service = Get-SCService -Name " ...
- Study notes for Clustering and K-means
1. Clustering Analysis Clustering is the process of grouping a set of (unlabeled) data objects into ...
- C++ 初始化与赋值
1.初始化与赋值的区别: 二者的区别不是看,是否有=这个赋值操作符,而是看操作的时候,对象是否已经有值. 初始化:创建对象,并给它设置初始值. 赋值:对象已经有值,擦除对象的当前值,并使用新值代替. ...
- 惊叹jQuery(解决jQuery对象到DOM的转换)
jQuery是一个javascript框架,但绝对不是通常意义上的一些包装,个人感觉是一个改变js控制方式的框架.我们可以像美工通过写css分离页面代码一样,通过jQuery来分离页面与效果..下面转 ...