`

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 带返回值的存储过程 DEMO

    用java调用oracle存储过程

    通过实例详细介绍了用java调用oracle存储过程的方法和步骤,包括无返回值的存储过程、有返回值的存储过程(非列表)和返回列表的存储过程的编写、JAVA调用,是一个对存储过程调用的一个全面总结,对程序开发具体实际...

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

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

    oracle 在一个存储过程中调用另一个返回游标的存储过程

    第一种情况是返回的游标是某个具体的表或视图的数据,如: SQL-Code: ...在调用的时候只要声明一个该表的ROWTYPE类型就可以了: SQL-Code: 代码如下: CREATE OR REPLACE PROCEDURE P_TESTB AS VARCURSOR SYS_REFCURSOR;

    spring mybatis 调用oracle存储过程

    在已有的spring+mybatis 基本操作oracle数据库的基础上,增加了3个调用存储过程的例子:无返回值、返回结果集、返回多个结果,希望对大家能有所帮助

    关于有返回值的存储过程

    阿斯顿规范个人各方都给我二哥德仁个人共同任何人和人文

    T100ERP调用ORACLE 数据库存储过程(返回值为游标类型)处理为JSON和数组方法

    T100ERP调用ORACLE 数据库存储过程(返回值为游标类型)处理为JSON和数组方法

    Spring JdbcTemplate 调用 Oracle 存储过程 与 Oracle 驱动下载

    之 常用 增删改查》,本文继续介绍 JdbcTemplate 调用数据库的存储过程,虽然 Mysql 也有存储过程,但是为了尽可能的多覆盖一点,本文选择调用 Oracle 的存储过程,其它数据库也是同理。 1)execute 方法:能执行...

    用java调用oracle存储过程总结

    一:无返回值的存储过程 二:有返回值的存储过程(非列表) 三:返回列表 及java不能情况下怎么调用

    Python中执行存储过程及获取存储过程返回值的方法

    主要介绍了Python中执行存储过程及获取存储过程返回值的方法,结合实例形式总结分析了Python调用存储过程的常用方法与相关操作注意事项,需要的朋友可以参考下

    自学oracle存储过程

    在存储过程中做简单动态查询..................................................................................................... 11 一、 本地动态 SQL.......................................................

    使用VB 调用oracle 数据库存储过程的研究

    使用VB 与oracle 进行连接是软件开发人员经常使用的组合,充分利用oracle 中的存储过程来处理应用 程序频繁使用的逻辑,不仅可以提高效率和安全性,而且也可以最大限度地利用资源,减少编程人员的重复劳 动。对存储过程...

    Oracle存储过程和自定义函数详解

    PL/SQL中的过程和函数(通常称为子程序)是PL/SQL块的一种特殊的类型,这种类型的子程序可以以编译的形式存放在数据库中,并为后续的程序块调用。 相同点: 完成特定功能的程序 不同点:是否用return语句返回值。 ...

    Java调用oracle函数返回oracle类(类似)集合

    Java调用oracle函数返回oracle类(类似)集合

    asp.net SQL存储过程分页

    asp.net中如何调用sql存储过程实现分页asp.net中oracle 存储过程(图文)asp.net中调用oracle存储过程的方法asp.net中IDataParameter调用存储过程的实现方法asp.net利用存储过程实现模糊查询示例分享asp.net利用存储...

    Oracle中 关于数据库存储过程和存储函数的使用

    存储过程和存储函数指存储在数据库中供所有用户程序调用的子程序叫存储过程、存储函数。存储过程没有返回值。存储函数有返回值 创建存储过程 用CREATE PROCEDURE命令建立存储过程和存储函数。 语法:create [or ...

    Oracle中命名块之存储过程的详解及使用方法

     包:可容纳多个过程或函数的一个容器(较好管理这些过程和函数,类似于java中的包);  触发器:在合适的实际被自动执行。(无需调用,在满足要求的情况下,自动执行;触发器也被称为隐式执行的命名块!)

    Oracle自定义函数

    执行时得找一个变量接收函数的返回值 1 、一个最简单的自定义函数Fun_test1的定义 2、Fun_test1自定义函数的调用的存储过程Pro_Fun_test1_1示例 3、Fun_test1自定义函数的调用的存储过程Pro_Fun_test1_2示

Global site tag (gtag.js) - Google Analytics