`

有多个返回值的存储过程-非列表形式

阅读更多

案例扩张:编写一个过程,可以输入雇员的编号,返回该雇员的姓名、工资和岗位。


plsql代码
--有输入和输出的存储过程(返回多个值)
create or replace procedure sun_pro12
(sunNo in number,sunName out varchar2,sunSal out number,sunJob out varchar) is
begin
  select ename,sal,job into sunName,sunSal,sunJob from kkkk where empno=sunNo;
  end;
 
java代码
public class Test1 {
        public static void main(String[] args) {
            Connection ct = null;
            CallableStatement cs = null;
            try {
                //1.加载驱动
                Class.forName("oracle.jdbc.driver.OracleDriver");
                ct = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl","scott","tiger");
               
                //2.创建CallableStatement,专门用来调用存储过程
               
                //看看如何调用有返回值的过程
                //创建CallableStatement
                cs = ct.prepareCall("{call sun_pro12(?,?,?,?)}");
               
                //给第一个?赋值
                cs.setInt(1, 7788);
               
                //给第二个?赋值
                cs.registerOutParameter(2, oracle.jdbc.OracleTypes.VARCHAR);
                //oracle.jdbc.OracleTypes选定的类型取决于第二个问号是什么类型的
                cs.registerOutParameter(3, oracle.jdbc.OracleTypes.NUMBER);
                cs.registerOutParameter(4, oracle.jdbc.OracleTypes.VARCHAR);
               
                //执行
                cs.execute();
               
                //取出返回值,要注意?的位置
                String name = cs.getString(2);
                double sal = cs.getDouble(3);
                String job = cs.getString(4);
               
                System.out.println("7788的名字:"+name+'\t'+"工资:"+sal+'\t'+"职位:"+job);
               
            } catch (Exception e) {
                e.printStackTrace();
            }
            finally{
                //关闭各个打开的资源
                try {
                    cs.close();
                    ct.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
}

分享到:
评论

相关推荐

    存储过程初学实例

    存储过程支持参数输入输出、返回单个或多个结果集以及返回值,甚至可以在一个存储过程中嵌套调用其他存储过程。 在SQL Server中,根据定义主体的不同,存储过程主要分为三类: 1. **系统存储过程**:这些是SQL ...

    存储过程语句 pro

    存储过程是由一个或多个SQL语句组成的代码块,它在数据库服务器上预先编译并存储。当需要执行时,只需调用存储过程的名字,而无需每次都重新解析和执行SQL语句,从而提高了执行效率。 2. **创建存储过程** 在SQL...

    在BIRT(百灵报表)中使用存储过程创建数据源

    - 调用返回多个结果集的存储过程:当一个存储过程返回多个独立的数据块时,可以分别处理每个结果集。 了解并熟练掌握在BIRT中使用存储过程创建数据源,不仅可以提高报表的灵活性,还能优化性能,特别是当处理复杂的...

    SQL Server 存储过程与实例

    C) **减少网络流量**:当多个SQL语句组合为一个存储过程时,客户端只需发送存储过程调用,而非所有的SQL语句,降低了网络传输的数据量,减轻了网络负载。 D) **安全性**:通过权限管理,系统管理员可以限制对存储...

    SqlServerCH创建和管理存储过程PPT学习教案.pptx

    存储过程有多种类型,包括系统存储过程、局部存储过程、临时存储过程和远程存储过程。系统存储过程以`sp_`开头,通常用于数据库管理和信息查询;局部存储过程存在于特定数据库中;临时存储过程(#或##)则只在当前...

    SQLServer存储过程在系统开发中的应用

    4. **远程存储过程**:用于访问远程服务器上的数据,可以跨越多个服务器执行操作。 5. **扩展存储过程**:通过外部编程语言(如 C 或 C++)编写,并以 DLL 形式加载到 SQL Server 中。扩展存储过程能够实现更复杂的...

    oracle存储过程集锦

    `charter_sql.sql`很可能是一个包含多个存储过程示例的SQL脚本文件,这些示例可以用来练习编写和执行存储过程。通过运行和分析这些脚本,我们可以看到存储过程在实际场景中的应用,比如数据的批量更新、复杂查询的...

    3、mybatis存储过程和函数的调用1

    通过设置返回值为`List`类型,我们可以处理存储过程返回的多个结果集。这通常涉及到多个`<resultMap>`和`<collection>`标签的使用,以便正确地映射和解析结果。 总结起来,MyBatis调用存储过程提供了灵活性和效率,...

    第8章 存储过程、函数和包.ppt

    与存储过程类似,但函数必须有返回值,并且其返回类型在定义时指定。函数通常用于执行计算或返回特定值。例如,根据雇员ID获取雇员姓名可以定义为一个存储函数。 **包** 在Oracle中,包是将相关的存储过程和函数...

    Oracle数据库存储过程详解

    使用`BEGIN...END`块来调用存储过程,适用于包含多个操作的情况。 示例: ```sql BEGIN -- 调用存储过程 NoParPro(); -- 其他操作 END; ``` #### 3.2 调用方式二 使用`EXECUTE IMMEDIATE`或`EXEC`语句来调用存储...

    oracle存储过程学习经典[语法+实例+调用]

    - 包允许将多个存储过程、函数、变量和游标组合在一起,提高代码的组织性和可维护性。 - 创建包的语法: ```sql CREATE PACKAGE schema.package_name AS -- declarations END package_name; CREATE PACKAGE ...

    C++入门---非程序员自学教程.rar

    C++是一种强大的面向对象编程语言,它被广泛用于软件开发、系统编程、游戏开发、科学计算等多个领域。这篇“C++入门---非程序员自学教程”是专为那些没有编程背景的人设计的,旨在帮助初学者理解C++的基础概念并逐步...

    java传list给存储过程,项目提取,不忽悠源码整理

    解压后,你可能找到一个或多个Java类,它们展示了如何创建`CallableStatement`,设置参数,并执行存储过程。这些代码可能还包含了如何处理存储过程的输出,比如获取返回值或结果集。 7. **注意事项**: - 确保...

    SQL触发、视图、存储过程查看工具

    2. **SQL视图**:视图是数据库中的虚拟表,它是由一个或多个SQL查询的结果集组成。视图并不实际存储数据,而是提供了一种查看和访问数据的新方式。视图可以简化复杂查询,隐藏敏感信息,或者组合来自不同表的数据。...

    SQL编程艺术:存储过程与函数的精妙之别

    1. **返回值**:存储过程可以没有返回值或返回多个值(通过输出参数),而函数必须返回单一值或一个表。 2. **副作用**:存储过程可以修改数据库数据,具有副作用;函数不允许修改数据库状态,应是无副作用的。 3. *...

    DB2存储过程

    DB2存储过程是一种在数据库中预编译并存储的过程,它可以接受输入参数、返回单个或多个结果集,以及返回状态值。编写良好的DB2存储过程能够提高数据库性能、简化应用逻辑,并增强代码的可维护性。本文档旨在规范DB2...

    linq to sql 操作存储过程、函数总结(二)

    1. **映射函数**:对于数据库函数,同样可以在DBML中进行映射,创建一个返回值为特定类型的函数,然后将其与数据库中的函数对应。 2. **调用函数**:与存储过程类似,可以使用DataContext对象来调用映射的函数,如`...

    oracle存储超详细速成学习资料(语法+实例+调用)

    Oracle 存储过程是数据库管理中的重要组成部分,它是一组为了完成特定功能的SQL语句集,被编译后存储在数据库中,可以被多次调用。本篇将深入探讨Oracle存储过程的基础知识、语法、常见问题以及如何通过Java进行调用...

    C# Oracle存储过程工具类

    存储过程是预编译的SQL语句和控制流语句的集合,可以在数据库中以函数的形式保存,供多次调用,提高了数据库的性能和安全性。 在C#中调用Oracle存储过程,我们需要使用Oracle提供的ODP.NET(Oracle Data Provider ...

Global site tag (gtag.js) - Google Analytics