`

oracle存储过程中简单地调用另一个有返回值的存储过程

阅读更多

先建一张测试表:

create table WWT_TABLE_TEST
(
  NAME     VARCHAR2(2000),
  AGE      NUMBER,
  SEX      VARCHAR2(20),
  BIRTHDAY DATE
)

 创建被调用的存储过程:

create or replace procedure wwt_test2(inchar in varchar2,outchar out varchar2) is
begin
outchar:=inchar||'hello procedure';
end;

 

创建调用被调用存储过程的存储过程:

create or replace procedure wwt_test1  is
myString varchar(1000);
tempString varchar(1000);
sqlText varchar(1000);
record_number number;
logId NUMBER;--记录log_pro的id
begin
--select cooper.SEQ_LOG_PRO.NEXTVAL into logId from dual;
begin

tempString:='already';
wwt_test2('wwt',tempString);
myString:=tempString;
sqlText:='insert into wwt_table_test  values('''||myString||''')';
dbms_output.put_line('==>'||sqlText);
execute immediate 'insert into wwt_table_test(name)  values('''||myString||''')';
execute immediate 'update wwt_table_test set name = name||''hello''';
commit;
end;
--以下为其它测试之用,可忽略
select count(*) into record_number from
 tbl_importdata_log t where t.STATE=1 and t.begintime like to_char(sysdate-2,'yyyy-mm-dd')||'%';
Dbms_Output.put_line('==>'||record_number);
if record_number<67 then
update wwt_table_test set name ='更新失败',age=23;
end if;
if record_number = 67 then
update wwt_table_test set name ='更新成功',age=24,birthday=sysdate;
end if;
commit;

end;


   

创建完后,在命令窗口中:call wwt_test1();执行完毕后,在表wwt_table_test中就会有一条记录了。

也可以在java类中调用,如:

package procudure;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class ProcedureTest {
	public static void main(String[] args) {
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
			Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:JULY", "scott","snaillocke");
			CallableStatement cs = conn.prepareCall("{call wwt_test1()}");
			/*
			 * 如果有参数可以在此设置
			 */
			//cs.setString(1, "SCOTT");
			//cs.setDouble(2, 666.66);//如果有是回值:call.registerOutParameter(2, java.sql.Types.VARCHAR);call.execute(); 
        			//String testPrint = call.getString(2);
			cs.execute();
			cs.close();
			conn.close();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
	}
}

 

分享到:
评论

相关推荐

    VB 调用oracle 带返回值的存储过程

    当使用VB与Oracle进行交互时,有时候我们需要调用Oracle中的存储过程,尤其是那些带有返回值的存储过程。下面将详细介绍如何在VB中实现这一操作。 首先,为了在VB中与Oracle数据库通信,我们需要引入Oracle的数据...

    hibernate query调用oracle存储过程

    以下是一个简单的示例,展示了如何调用一个不带参数的Oracle存储过程: ```java Session session = sessionFactory.openSession(); Transaction transaction = session.beginTransaction(); session....

    关于有返回值的存储过程

    标题“关于有返回值的存储过程”着重提到了具有返回值这一特性,这通常指的是存储过程可以返回一个或多个结果以供后续操作使用。 存储过程具有返回值的主要好处包括提高性能、增强安全性、降低网络流量以及提供更好...

    用java调用oracle存储过程

    以上代码展示了如何在Java中调用Oracle数据库的三种类型的存储过程:无返回值的存储过程、有单个返回值的存储过程以及返回列表的存储过程。对于无返回值的存储过程,主要涉及的是参数的输入,通过`execute()`方法...

    vb调用oracle存储过程

    在Visual Basic中调用Oracle存储过程涉及到创建和配置`ADODB.Command`对象,设置存储过程的参数,并正确处理存储过程的返回值。通过这种方式,可以有效地在VB应用程序中利用Oracle数据库的功能,如数据处理和业务...

    oracle 存储过程 函数 dblink

    DBLink(Database Link)是一种允许在一个Oracle数据库实例中访问另一个Oracle数据库实例中的对象的技术。DBLink的应用场景非常广泛,例如在不同的数据库实例之间复制数据、合并多个数据库中的数据等。 #### 七、...

    C#中调用ORACLE的PACKAGE里方法和存储过程的应用

    在实际开发中,C#与ORACLE数据库的集成是一个非常重要的 topic,本文将详细介绍如何在C#中调用ORACLE的PACKAGE里的方法和存储过程。 首先,我们需要在ORACLE数据库中建立一个PACKAGE,包括SPEC和BODY两部分。SPEC是...

    oracle调用存储过程

    调用Oracle存储过程是数据库管理中的常见任务,尤其对于需要执行大量数据处理或事务操作的场景。下面我们将详细探讨如何在Oracle中调用存储过程以及其相关知识点。 1. **创建存储过程**: 在Oracle中,你可以使用`...

    C#调用存储过程详解(带返回值、参数输入输出等)

    本文实例讲述了C#调用存储过程的方法。分享给大家供大家参考,具体如下: CREATE PROCEDURE [dbo].[GetNameById] @studentid varchar(8), @studentname nvarchar(50) OUTPUT AS BEGIN SELECT @studentname=...

    spring mybatis 调用oracle存储过程

    通过以上步骤,开发者可以在Spring和MyBatis环境中顺利地调用Oracle存储过程,实现复杂业务逻辑的处理。这不仅可以提高代码的可维护性,还能利用数据库的优势来优化性能。在进行这类操作时,一定要注意参数类型、...

    VB调用ORACLE存储过程

    在VB中调用Oracle存储过程是一项常见的任务,特别是在开发基于Oracle数据库的应用程序时。ADO(ActiveX Data Objects)是微软提供的一个数据访问接口,它允许程序员通过VB等编程语言与数据库进行交互。以下是对VB...

    用JDBC操作Oracle的存储过程返回值

    对于输出参数,我们通常需要先设置一个`null`值,然后在调用存储过程后读取: ```java cs.registerOutParameter(1, Types.INTEGER); // 假设第一个参数是返回值,类型为INTEGER ``` 5. **执行存储过程**:调用`...

    JAVA调用ORACLE存储过程

    ### JAVA调用ORACLE存储过程知识点详解 #### 一、背景与概述 在现代软件开发过程中,集成多种技术栈是常态。特别是在企业级应用中,Java 和 Oracle 数据库的组合非常常见。通过 Java 调用 Oracle 存储过程不仅能够...

    java调用Oracle存储过程

    在Java编程中,调用Oracle数据库的存储过程是常见的任务,尤其在处理复杂业务逻辑或数据操作时。本文将深入探讨如何使用Java与...记住,实践是最好的老师,尝试编写一个简单的Java程序来调用Oracle存储过程,加深理解。

    PB调用存储过程[Oracle][参考].pdf

    PB 调用存储过程 [Oracle][参考] ...通过本文,我们可以了解 PB 中调用 Oracle 存储过程的格式和方法,了解无入参和有入参存储过程的调用格式,了解 INOUT 类型过程的调用方式,并注意一些重要的注意事项。

    ORACLE存储过程最全教程

    Oracle存储过程是数据库管理系统Oracle中的一个关键特性,它允许开发者编写一组预编译的SQL和PL/SQL语句,以实现特定的业务逻辑或数据库操作。这篇教程将深入讲解Oracle存储过程的各个方面,帮助你从基础到高级全面...

    JAVA调用ORACLE存储过程通用类

    本篇文章将详细介绍一个用于Java应用程序中调用Oracle存储过程的通用类,帮助开发者更高效地实现相关功能。 #### 核心知识点解析 ##### 1. 类的基本结构 此通用类位于`com.gemship.common.service.impl`包下,名...

    调用Oracle数据库中的存储过程需要两步走

    总结来说,调用Oracle存储过程涉及定义包含`IN`和`OUT`参数的存储过程,并在应用程序中通过适当的语法调用它。这种方式使得我们可以利用存储过程的强大功能来处理复杂的数据操作,同时保持应用程序代码的简洁性和可...

    使用hibernate调用oracle的存储过程

    在hibernate中调用oracle中的存储过程的详细代码。可以借鉴使用,帮助学习。

Global site tag (gtag.js) - Google Analytics