`
xqf222
  • 浏览: 129129 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Oracle存储过程编写(带输出参数)

 
阅读更多

原文来源:http://www.cnblogs.com/shengel/archive/2008/10/20/1315424.html

转贴理由:实际运用中的,展示了存储过程输出参数赋值的方法.与SQL存储过程赋值语法不同

create or replace procedure P_IMSCI_ALERTPAYTYPE
(
paramContractuuid in varchar2,
paramMapid in varchar2,
paramMappartid in varchar2,
paramSetpaytypename in varchar2 := null,
paramBuypaytypename in varchar2 := null,
retValue out int
)
is
var_Setpaytypeuuid ci_worktype.setpaytypeuuid%type := null;
var_Buypaytypeuuid ci_worktype.buymeasureuuid%type := null;

begin
---------------查询支付类型UUID
retValue := 0;
if ( paramSetpaytypename is not null and length( paramSetpaytypename ) > 0) then
select ty.paytypeuuid into var_Setpaytypeuuid from ci_paytype ty where ty.paytypename = paramSetpaytypename and ty.contractuuid = paramContractuuid;
end if;
if ( paramBuypaytypename is not null and length( paramBuypaytypename ) > 0) then
select ty.paytypeuuid into var_Buypaytypeuuid from ci_paytype ty where ty.paytypename = paramBuypaytypename and ty.contractuuid = paramContractuuid;
end if;
savepoint mark1;


--------------------支付申请 图纸工程量
retValue := -1;
update ci_worktype ty set ty.setpaytypeuuid = var_Setpaytypeuuid,ty.bbuypaytypeuuid = var_Buypaytypeuuid
where ty.contractuuid = paramContractuuid and ty.worktypeuuid =
(select mp.worktypeuuid from ci_scaleapp mp
where mp.mapid || mp.mappartid = paramMapid || paramMappartid
and mp.contractuuid = paramContractuuid);

---------------------工程款
retValue := -2;
update ci_scalewpc tt set tt.setpaytypeuuid = var_Setpaytypeuuid,
tt.buypaytypeuuid = var_Buypaytypeuuid ,
tt.setpaytypename=paramSetpaytypename,tt.buypaytypename=paramBuypaytypename
where tt.contractuuid = paramContractuuid
and tt.mapid || tt.mappartid = paramMapid || paramMappartid;


---------------------图纸工程量库
retValue := -3;
update ci_mapprojware tt set
tt.setpaytypename=paramSetpaytypename,tt.buypaytypename=paramBuypaytypename
where tt.contractuuid=paramContractuuid
and tt.mapid||tt.mappartid= paramMapid || paramMappartid;
retValue := 0;
commit;
Exception
when NO_DATA_FOUND then
DBMS_OUTPUT.PUT_LINE('select into 没有返回行异常');
rollback to savepoint mark1;
retValue :=-1;
WHEN TOO_MANY_ROWS THEN
DBMS_OUTPUT.PUT_LINE('select into 返回多行异常');
rollback to savepoint mark1;
retValue :=-1;
when OTHERS then
case retValue
when 0 then DBMS_OUTPUT.PUT_LINE('错误位置:' || '查询支付类型UUID');
when -1 then DBMS_OUTPUT.PUT_LINE('错误位置:' || '支付申请 图纸工程量');
when -2 then DBMS_OUTPUT.PUT_LINE('错误位置:' || '工程款');
when -3 then DBMS_OUTPUT.PUT_LINE('错误位置:' || '图纸工程量库');
else DBMS_OUTPUT.PUT_LINE('错误位置:' || '未知位置');
end case;
rollback to savepoint mark1;
end;

declare
refval int;
begin
P_IMSCI_ALERTPAYTYPE('e8799e72-f127-45d3-b54a-f247cca47dd0','PK8GB191103B30843SD','XQJ-TB-05C,配吊杆'
,'固定总包','固定单价', refval );
end;


P_IMSCI_modifytype('PK8GB191103B30843SD','XQJ-TB-05C,配吊杆');

分享到:
评论

相关推荐

    oracle存储过程编写

    以下是对"Oracle存储过程编写"的详细讲解。 一、存储过程的基本概念 1. 存储过程:存储在数据库服务器上的预编译的SQL和PL/SQL代码集合,可以在需要时调用,减少了网络流量,提高了系统性能。 2. PL/SQL:Oracle的...

    用callabledStatement调用oracle存储过程实用例子(IN OUT 传游标)

    存储过程 TESTC 有一个输出参数,类型为游标类型。我们使用 CALLABLESTATEMENT 来调用存储过程,获取游标类型参数的值,并将其转换为 ResultSet 对象。最后,我们使用 while 循环来遍历 ResultSet 对象,并将结果...

    Oracle存储过程最基本的开发规范

    ### Oracle存储过程开发基本规范详解 #### 一、概述 Oracle存储过程作为一种强大的数据库编程工具,在企业级应用中被广泛采用。为了确保存储过程的质量、可读性和可维护性,制定一套合理的编码规范至关重要。本文将...

    oracle存储过程实例

    Oracle存储过程是数据库管理系统中的一种重要特性,它允许开发者编写一系列SQL和PL/SQL语句,形成一个可重用的程序单元。存储过程在数据库中预先编译并存储,这样在执行时能提高效率,因为它避免了每次调用时的重新...

    ORACLE存储过程最全教程

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

    oracle存储过程教程

    Oracle存储过程是数据库管理系统Oracle中的一个重要特性,它允许开发者编写包含一系列SQL语句和PL/SQL块的程序单元,这些程序单元可以在需要时执行,提高了数据处理的效率和应用程序的性能。在Java开发中,Oracle...

    ibatis与存储过程(带输出参数的应用)

    本主题将深入探讨如何在Ibatis中使用存储过程,特别是涉及带有输出参数的存储过程。 Ibatis,由MyBatis的前身发展而来,它是一个轻量级的ORM(对象关系映射)框架,允许开发者编写SQL语句并与Java对象进行绑定,而...

    Spring JdbcTemplate调用Oracle存储过程实现CRUD

    存储过程使用 `SYS_REFCURSOR` 输出参数将结果集返回给调用方。 `P_EMP_ADD` 存储过程用于添加新员工信息,并返回添加结果。该过程接收两个输入参数:`V_ID` 和 `V_NAME`,分别用于添加员工 ID 和姓名。存储过程...

    oracle存储过程笔记

    Oracle存储过程是数据库管理系统Oracle中的一种重要特性,它允许开发者编写一组SQL和PL/SQL语句,形成一个可重用的程序单元。存储过程的概念类似于高级编程语言中的模块,通过参数传递来实现数据的交互,体现了模块...

    润乾报表调用oracle存储过程案例说明

    以下是一个简单的存储过程示例,名为`TEST`,它接收两个输入参数`arg1`和`arg2`,并返回一个sys_refcursor类型的输出参数`v_out_result`: ```sql CREATE OR REPLACE PROCEDURE TEST (arg1 IN VARCHAR2, arg2 IN ...

    oracle存储过程学习经典(实例)

    Oracle存储过程是数据库管理系统Oracle中的一个重要特性,它允许开发者编写一系列的SQL和PL/SQL语句,形成一个可重用的代码块。这个"Oracle存储过程学习经典(实例)"资源显然是为初学者设计的,旨在帮助他们掌握如何...

    oracle存储过程学习资料

    Oracle存储过程是数据库管理系统Oracle中的一个重要特性,它允许开发者编写一系列复杂的SQL和PL/SQL语句,形成可重用的代码块。这些代码块可以执行数据处理、事务控制、错误处理等多种任务,极大地提高了数据库应用...

    Oracle存储过程语法学习

    Oracle存储过程是数据库管理系统...总之,Oracle存储过程是一种强大的工具,通过它可以编写复杂的业务逻辑,提升应用程序的效率和可维护性。熟练掌握存储过程的创建、调用和异常处理,对数据库管理及应用开发至关重要。

    ORACLE存储过程学习

    Oracle存储过程使用PL/SQL(Procedural Language for SQL)编写,这是一种专门为Oracle设计的过程化语言。 #### 二、存储过程的基本组成部分 存储过程包含以下几个主要部分: - **数据类型**:定义变量、常量和游标...

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

    Oracle存储过程是数据库管理系统Oracle中的一个重要特性,它允许开发者编写一系列复杂的SQL和PL/SQL语句,形成可重用的代码模块。Oracle存储过程的学习涵盖了语法、实例和调用等多个方面,这对于数据库管理员和开发...

    java 与 oracle 存储过程

    Oracle存储过程是一种在数据库服务器端编写的程序,可以包含一系列SQL语句和控制流语句,提高了数据操作的效率和安全性。Java则作为后端开发的主要语言,通过JDBC(Java Database Connectivity)接口与Oracle数据库...

    VC做的小东西,测试oracle存储过程

    3. 编写SQL调用:构建SQL语句来调用存储过程,可能包含输入参数和输出参数。 4. 执行存储过程:通过`SQLExecute`(ODBC)或`OCIDescrpare`和`OCIParse`(OCI)等函数执行存储过程。 5. 处理结果:如果存储过程有...

    ibatis调用oracle存储过程

    Oracle存储过程是在数据库中编译并存储的一组SQL语句和过程化控制流语句的集合,它们可以接受输入参数,输出参数,甚至返回多个结果集。在本例中,我们创建了两个存储过程:`GetSingleEmpRS` 和 `GetDoubleEmpRS`,...

Global site tag (gtag.js) - Google Analytics