随笔分类 -  EBS - Oracle & PL/SQL

摘要:EXECUTE IMMEDIATE代替了以前Oracle8i中DBMS_SQL package包.它解析并马上执行动态的SQL语句或非运行时创建的PL/SQL块.动态创建和执行SQL语句性能超前,EXECUTE IMMEDIATE的目标在于减小企业费用并获得较高的性能,较之以前它相当容易编码.尽管DBMS_SQL仍然可用,但是推荐使用EXECUTE IMMEDIATE,因为它获的收益在包之上。 使用技巧 1. EXECUTE IMMEDIATE将不会提交一个DML事务执行,应该显式提交。 如果通过EXECUTE IMMEDIATE处理DML命令,那么在完成以前需要显式提交或者作为EXECUTE 阅读全文
posted @ 2011-08-25 08:49 郭振斌 阅读(453) 评论(0) 推荐(0)
摘要:1. 静态SQLSQL与动态SQL Oracle编译PL/SQL程序块分为两个种:其一为前期联编(early binding),即SQL语句在程序编译期间就已经确定,大多数的编译情况属于这种类型;另外一种是后期联编(late binding),即SQL语句只有在运行阶段才能建立,例如当查询条件为用户输入时,那么Oracle的SQL引擎就无法在编译期对该程序语句进行确定,只能在用户输入一定的查询条件后才能提交给SQL引擎进行处理。通常,静态SQL采用前一种编译方式,而动态SQL采用后一种编译方式。 本文主要就动态SQL的开发进行讨论,并在最后给出一些实际开发的技巧。 2. 动态SQL程序开... 阅读全文
posted @ 2011-08-24 11:27 郭振斌 阅读(554) 评论(0) 推荐(0)
摘要:一般的PL/SQL程序设计中,在DML和事务控制的语句中可以直接使用SQL,但是DDL语句及系统控制语句却不能在PL/SQL中直接使用,要想实现在PL/SQL中使用DDL语句及系统控制语句,可以通过使用动态SQL来实现。 首先我们应该了解什么是动态SQL,在Oracle数据库开发PL/SQL块中我们使用的SQL分为:静态SQL语句和动态SQL语句。所谓静态SQL指在PL/SQL块中使用的SQL语句在编译时是明确的,执行的是确定对象。而动态SQL是指在PL/SQL块编译时SQL语句是不确定的,如根据用户输入的参数的不同而执行不同的操作。编译程序对动态语句部分不进行处理,只是在程序运行时动态地创. 阅读全文
posted @ 2011-08-24 11:23 郭振斌 阅读(5432) 评论(0) 推荐(0)
摘要:PL/SQL里的游标可以分为显式和隐式两种,而隐式有分为select into隐式游标和for .. in 隐式游标两种。所以,我们可以认为,有3种游标用法:A. 显式游标B. select into隐式游标C. for .. in 隐式游标如何正确的选择使用哪种游标,将对你的程序的性能,可读性,代码量等产生重大影响……--By RollingPig,本文简单的列举了PL/SQL中用到的几种不同类型的游标写法,并简单对比了不同游标写法的优缺点,同时给出了一个选择的基本原则。本文并不包括太多的实际运行/性能测试,有兴趣的话,大家可以根据示例自己测试。1.三种游标形式的简单例子A. 显式游标普通显 阅读全文
posted @ 2011-08-24 11:11 郭振斌 阅读(970) 评论(0) 推荐(0)
摘要:一些OU的11g学习studentguide的地址Summary:OracleDatabase11g:JavaDevelopmentStudentGuidehttp://www.oracledatabase12g.com/archives/oracle-database-11g-java-development-student-guide.htmlOracleDatabase11g:XMLDevelopmentStudentGuidehttp://www.oracledatabase12g.com/archives/oracle-database-11g-xml-development-st. 阅读全文
posted @ 2011-08-19 13:46 郭振斌 阅读(834) 评论(0) 推荐(0)
摘要:DECLARE v_header_id NUMBER; CURSOR cur_part_list IS SELECT * FROM ske_sys_part_list FOR UPDATE NOWAIT;BEGIN FOR rec_part IN cur_part_list LOOP SELECT ske_sys_part_list_s.nextval INTO v_header_id FROM dual; IF rec_part.header_id IS NULL THEN UPDATE ske_sys_part_list SET header_id = v_header_id WHERE 阅读全文
posted @ 2011-08-14 23:20 郭振斌 阅读(306) 评论(0) 推荐(0)
摘要:在编码过程中,数组是我们最最常用的数据结构之一。但是数组又是我们最容易抛弃的数据结构,经常由于初始化和数组长度固定等原因,我们常常用ArrayList等其他一些集合类来代替它。其实,数组作为最简单的集合数据,与其他集合数据比较起来有操作简单和查询速度快等优点。对于其长度固定的弱点,也在很多时候可以得到相应的解决。此外,在编码过程中,有些是直观的就能让我们使用数组,而很多时候却不是那么直观,需要我们稍加分析才行。本文的总结,是对数组的使用的被忽略而又能显示数组优点的一些方面的阐述,希望用来抛砖引玉,引起大家对数组的用法进行挖掘。第一, 数组对if…else…和case语句的改进在我们的编码过程中 阅读全文
posted @ 2011-06-17 10:21 郭振斌 阅读(1038) 评论(2) 推荐(0)
摘要:我们现在对事务处理接口的理解,我想,很多人跟我的理解一样,还停留在只知道有两个接口表,或者说,知道一接口一临时表的程度。到底这两个表功能有什么区别?各自是如何运作的? 本文我将带着这些疑问,和大家一起进入讨论。看看Oracle给他们的解释:<右边框给出比较>MTL_TRANSACTIONS_INTERFACEMTL_TRANSACTIONS_INTERFACE is the interface point betweennon– Inventory applications and the Inventory transaction module.Transaction Manag 阅读全文
posted @ 2011-05-11 19:37 郭振斌 阅读(3764) 评论(1) 推荐(3)
摘要:比如有一个外围支持系统,用户需要在外围系统登录之后点个link就可以登录到Oracle ERP系统中,那么我们需要先把外围系统的用户创建在Oracle ERP中,并且分配职责给他。DECLAREa BOOLEAN;BEGIN---------------------------------------------------------------Change password-------------------------------------------------------------------------------------------------------------- 阅读全文
posted @ 2011-05-11 19:28 郭振斌 阅读(3059) 评论(0) 推荐(0)
摘要:要在FOLDER的列中用到LOV。问题描述: LOV的KEY与VALUE ,到底以谁执行验证。 例: 1 ORACLE 2DB23MYSQL在FOLDER中放的描述列,预想的效果是:输入O,直接对应出ORACLE ,或是用SHIT+F5从上一行中复制,结果老是弹出选择框,但直接输入1后,自动验证出:ORACLE。问题解决: 方案1:在定义LOV时,列显示标签中:把描述字段排在第一位; 方案2:在字段的属性面板中,设置“列映射属性”把KEY列宽度设置为0; 阅读全文
posted @ 2011-03-10 10:11 郭振斌 阅读(744) 评论(0) 推荐(0)
摘要:lv_msg_count : 为API返回参数,为消息的个数。 根据消息的具体情况,循环次数要做相应调整。加大次数,消息内容就多,反之则少.IF lv_msg_count > 0 THEN lv_mesg := chr(10) || substr(fnd_msg_pub.get(fnd_msg_pub.g_first, fnd_api.g_false), 1, 512); FOR i IN 1 .. (lv_msg_count - 3) LOOP lv_mesg := lv_mesg || chr(10) || substr(fnd_msg_pub.get(fnd_msg_pub.g_n 阅读全文
posted @ 2011-03-10 10:07 郭振斌 阅读(641) 评论(0) 推荐(0)
摘要:使用sql%rowcount捕捉update异常:CREATE OR REPLACE procedure test1(retvalue out char) as begin update test set a = '1 ' where a = '1 '; if sql%rowcount = 0 then retvalue := 'F '; else commit; retvalue := 'T '; end if; end test1; 阅读全文
posted @ 2011-02-25 12:10 郭振斌 阅读(988) 评论(0) 推荐(0)
摘要:需要自己创建交货号,执行这个API一直出现:Return Status = EMsg Count = 1Delivery Id = Delivery Name = Msg Data = WSH在API里头传入“收货人”参数,即发运事务处理-查询“交货”-里头的“收货人”字段:p_delivery_info.customer_id := 2040; p_delivery_info.customer_number := '1020';解决:后面发现customer_id是指客户的ID,但是customer_number并不是客户编号,而是客户的account_number。然后custo 阅读全文
posted @ 2011-01-11 17:27 郭振斌 阅读(1198) 评论(0) 推荐(0)
摘要:最近论坛很多人提的问题都与行列转换有关系,所以我对行列转换的相关知识做了一个总结,希望对大家有所帮助,同时有何错疏,恳请大家指出,我也是在写作过程中学习,算是一起和大家学习吧。行列转换包括以下六种情况:*列转行*行转列*多列转换成字符串*多行转换成字符串*字符串转换成多列*字符串转换成多行下面分别进行举例介绍。首先声明一点,有些例子需要如下10g及以后才有的知识:a。掌握model子句,b。正则表达式c。加强的层次查询讨论的适用范围只包括8i,9i,10g及以后版本。begin:1、列转行CREATE TABLE t_col_row(ID INT,c1 VARCHAR2(10),c2 VARC 阅读全文
posted @ 2010-12-31 17:37 郭振斌 阅读(1381) 评论(0) 推荐(1)
摘要:[代码] 阅读全文
posted @ 2010-12-31 16:39 郭振斌 阅读(472) 评论(0) 推荐(0)
摘要:[代码] 阅读全文
posted @ 2010-12-31 16:38 郭振斌 阅读(391) 评论(0) 推荐(0)
摘要:[代码] 阅读全文
posted @ 2010-12-31 16:30 郭振斌 阅读(473) 评论(0) 推荐(0)
摘要:[代码] 阅读全文
posted @ 2010-12-31 16:28 郭振斌 阅读(692) 评论(0) 推荐(0)
摘要:select object_name, lmode, sid session_id, decode(type, 'MR', 'Media Recovery', 'RT', 'Redo Thread', 'UN', 'User Name', 'TX', 'Transaction', 'TM', 'DML', 'UL', 'PL/SQL User Lock', 'DX', 'Distributed Xaction', 'CF', 'Control File', 'IS', 'Instance State', 'FS', 'File Set', 'IR', 'Instance Recovery 阅读全文
posted @ 2010-12-31 13:42 郭振斌 阅读(704) 评论(0) 推荐(0)
摘要:一:分析函数over Oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是 对于每个组返回多行,而聚合函数对于每个组只返回一行。 下面通过几个例子来说明其应用。 1:统计某商店的营业额。 date sale 1 20 2 15 3 14 4 18 5 30 规则:按天统计:每天都统计前面几天的总额 得到的结果: DATE SALE SUM ----- -------- ------ 1 20 20 --1天 2 15 35 --1天+2天 3 14 49 --1天+2天+3天 4 18 67 . 5 30 97 . 2:统计各班成绩第一名的同 阅读全文
posted @ 2010-12-31 13:35 郭振斌 阅读(883) 评论(0) 推荐(1)