热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

原文来源:http:www.cnblogs.comshengelarchive200810201315424.html转贴理由:实际运用中的,展示了存储过程输出参数赋值的方法.与SQL

原文来源: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,配吊杆');


推荐阅读
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • WebSocket与Socket.io的理解
    WebSocketprotocol是HTML5一种新的协议。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送 ... [详细]
  • 本文介绍了如何使用PHP向系统日历中添加事件的方法,通过使用PHP技术可以实现自动添加事件的功能,从而实现全局通知系统和迅速记录工具的自动化。同时还提到了系统exchange自带的日历具有同步感的特点,以及使用web技术实现自动添加事件的优势。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 本文介绍了在使用Python中的aiohttp模块模拟服务器时出现的连接失败问题,并提供了相应的解决方法。文章中详细说明了出错的代码以及相关的软件版本和环境信息,同时也提到了相关的警告信息和函数的替代方案。通过阅读本文,读者可以了解到如何解决Python连接服务器失败的问题,并对aiohttp模块有更深入的了解。 ... [详细]
  • 本文详细介绍了MySQL表分区的创建、增加和删除方法,包括查看分区数据量和全库数据量的方法。欢迎大家阅读并给予点评。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
author-avatar
纠结大王烨要人陪往_763
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有