壹佰网|ERP100 - 企业信息化知识门户

 找回密码
 注册
查看: 3999|回复: 73

[财务] [分享知识 原创连载]一个EBS技术顾问在开发学习中遇到的问题连载,欢迎大家给我点评;

    [复制链接]
发表于 2013/7/21 13:34:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622  。

您需要 登录 才可以下载或查看,没有帐号?注册

x
经过实习期的培训,毕业之后,进入公司开始了自学的旅程,有点迷茫,定位不清楚,
   部门是财务咨询下面的EBS

  看了论坛的很多精品帖,

基本算是清楚了我们在部门的定位:ERP技术顾问

  不清楚我们学习的流程  比较合理的流程是什么??

  想求指导指导


   本连载的亮点是:希望能够早日实现涅槃,早日融入ERP。

点评

很有价值;宝贵的总结;  发表于 2013/8/14 06:49

本帖被以下淘专辑推荐:

 楼主| 发表于 2013/8/23 14:46:16 | 显示全部楼层
本帖最后由 YUGENPING 于 2013/8/23 16:43 编辑

IS NULL 判断是否为空,为空并不等价于空字符或者数字0,而=NULL则是判断某个值是否等于NULL

NULL=NULL和NULL<>NULL均为FALSE

当我们想输出¥或者$
to_char('数字','L99,999.99')
to_char('数字','$99,999.99')
L:表示强制显示当地货币符号
$: 表示显示美元符号
9: 表示一个数字
0: 表示强制0显示
.: 表示一个小数点
,: 表示一个千位分隔符

经典Oracle SQL查询练习.pdf (1.06 MB, 下载次数: 11)
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2013/8/1 11:48:43 | 显示全部楼层
本帖最后由 YUGENPING 于 2013/8/1 14:00 编辑

复合数据类型包括记录类型、集合
记录类型无论从概念上还是从结构上都非常的类似于数据库表的行。记录作为一个整体并没有值,但是每个单独的成员或者字段却都是有值的。

使用记录的优势显而易见:数据抽象、操作集合、简洁干净的代码。

记录有3种声明方法:基于表的记录类型、基于游标的记录类型(当然了,肯定得先声明了游标)、程序猿自定义的记录类型。
基于表的记录类型:表名加上%ROWTYPE属性的方法便可以声明该类型的记录了。
基于游标的记录类型:对显式声明的游标或者游标变量加上%ROWTYPE便可以声明了。
程序猿自定义的记录类型:TYPE....RECORD语句定义该记录类型,这种方法定义的记录的每个字段都要显式的定义
下面的示例是一个混合的记录类型,演示了一个记录类型中可以出现的各种字段声明,包括NOT NULL约束、子类型的使用、%TYPE的使用、指定缺省值、关联数组、嵌套的记录。
  1. TYPE  mismash_rectype IS  RECORD
  2. (emp_number      number(10)   not null:=0,
  3.   paragraph_text     long_line_type,
  4. company_nm      company.name%TYPE,
  5. total_sales           company.sales.total_sales%TYPE:=0,
  6. new_hires_tab     employee_ids_tabletype,
  7. prifers_nonsmoking_fl       BOOLEAN  :=FALSE,
  8. new_company _rec       company_rectype
  9. );
复制代码
使用记录过程中:分为记录级别的操作和字段级别的操作
记录级别的操作可以避免对单独字段的引用,目前支持的记录级别的操作包括:拷贝(两个记录具有相同的字段,字段的数据类型相同或者可以隐式的转换),赋值NULL,参数定义中可以定义为记录类型,并传递记录参数,函数也可以返回记录类型。
目前不支持的记录级别的操作包括:不能通过IS NULL判断整个记录的所有字段都是NULL,相反,必须通过对每个字段使用IS  NULL来判断记录是否为空。不能对两个记录进行比较。

如果是在数据库中操作某个表,数据库为我们提供了两种结构,OLD和NEW,这两个是伪记录。
OLD:这条伪记录代表的是当前事务开始之前表中记录的值
NEW:这条伪记录代表的是当前事物结束之后,表中记录的新值。


集合是类似于列表或者一维数组的数据结构。集合分为3种:关联数组、嵌套表、VARRY。
关联数组是一个只能在PLSQL环境使用的,一维的、没有边界的、稀疏的、由同质元素构成的集合类型。
  1. DECLARE
  2.    TYPE list_of_names_t IS TABLE OF person.first_name%TYPE
  3.                               INDEX BY PLS_INTEGER;

  4.    happyfamily   list_of_names_t;
  5.    l_row         PLS_INTEGER;
  6. BEGIN
  7.    happyfamily (2020202020) := 'Eli';
  8.    happyfamily (-15070) := 'Steven';
  9.    happyfamily (-90900) := 'Chris';
  10.    happyfamily (88) := 'Veva';

  11.    l_row := happyfamily.FIRST;

  12.    WHILE (l_row IS NOT NULL)
  13.    LOOP
  14.       DBMS_OUTPUT.put_line (happyfamily (l_row));
  15.       l_row := happyfamily.NEXT (l_row);
  16.    END LOOP;
  17. END;
复制代码

结果和解释

结果和解释

嵌套表也是一维的、没有边界的、由同质元素组成的。嵌套表最开始也都是紧凑的,不过随着不断的删除操作就开始变得稀疏了。嵌套表可以同时在PLSQL和数据库中使用。
  1. create  type list_of_names is table of varchar2(100);--创建一个嵌套表

  2. declare
  3.   children  list_of_names:=list_of_names();--声明嵌套表的变量
  4.   family    list_of_names:=list_of_names();
  5.   parents   list_of_names:=list_of_names();
  6. begin
  7.   family.extend(4);--显式声明空间 4行
  8.   family(1):='child1';
  9.   family(2):='child2';
  10.   family(3):='parent1';
  11.   family(4):='parent2';
  12.   
  13.   children.extend;--显式声明空间 1行
  14.   children(1):='child1';
  15.   children.extend;
  16.   children(2):='child2';
  17.   
  18.   parents:=family  multiset except children;--multiset except类似于SQL的MINUS,求差集
  19.   
  20.   for low in parents.first..parents.last loop
  21.    Dbms_Output.put_line(parents(low));
  22.    end loop;
  23.   
  24. end;
复制代码
VARRY与前两种类似,但是它是有边界并且是非稀疏的。集合的方法如下:
      

集合方法

集合方法














点评

这个可以让你不断的回顾;其他朋友还可以给你一些建议;回过头来再翻翻,其实挺好的;  发表于 2013/8/1 12:10
这是上个礼拜看的 然后这个礼拜复习 发现这种方法挺好的!!学习效率至少挺高了蛮多  发表于 2013/8/1 11:59

评分

参与人数 1努力值 +100 收起 理由
纵横四海 + 100 赞一个!

查看全部评分

回复 支持 1 反对 0

使用道具 举报

发表于 2013/7/21 14:24:10 | 显示全部楼层
个人简介:进入财务咨询的菜鸟,向各位前辈取经来了
连载主题:自己在开发学习中遇到的问题
发布频率:每周
计划发布在那个板块:Oracle EBS
更新周期(每x天/每周/每两周/每月): 每周
本连载的亮点是:希望能够早日实现涅槃,早日融入ERP。

纵横四海点评:Oracle EBS的开发需要掌握多种技术,比如PL/SQL  ,From,Report,Discovere,workflow,OAF等;这些技术需要我们有钻研精神;要掌握好这些技术,EBS的表结构需要我们要熟练掌握,EBS表众多你需要温故而知新;在经过一段时间的开发学习后你应该多关注一些业务,比如会计学原理的学习等;祝愿你通过这个连载取得进步;

 楼主| 发表于 2013/7/21 14:28:56 | 显示全部楼层
纵横四海 发表于 2013/7/21 14:24
个人简介:进入财务咨询的菜鸟,向各位前辈取经来了
连载主题:自己在开发学习中遇到的问题
发布频率: ...

  QQ上显示是胡老师的时候  其实很激动    真的   

      别的多说无益   只希望能够学好学深  

     对得起关心我们的人咯!

点评

你能够将ERP100这个平台用好我就是最开心的事情;我会根据你的连载给你帮助;  发表于 2013/7/21 14:30
发表于 2013/7/25 14:31:22 | 显示全部楼层
跟你差不多,半路出家自己混型选手,希望能共同探讨,共同进步!

点评

共同进步哈  发表于 2013/7/29 10:57
 楼主| 发表于 2013/7/27 16:11:24 | 显示全部楼层
本帖最后由 YUGENPING 于 2013/7/27 16:22 编辑

今天算是开帖了   第一次发帖   肯定会有不少错误的地方  希望各位批评指正!
       第一次呢  我要写的是这周PLSQL的学习:
      第一次接触PLSQL,是实习期开发报表和开发FORM表单,那时候啥也不知道  就知道跟着技术总监一步一步做  
      亦步亦趋  纯粹是盲人摸象  瞎折腾着呢   好了  废话不多说  下面开始记录我这周的所学

    首先   PLSQL总述,分为六部分
    第一部分   PLSQL编程
    第二部分    PLSQL程序结构
    第三部分    PLSQL数据
    第四部分    PLSQL中的SQL
    第五部分    构造PLSQL应用程序
    第六部分   高级PLSQL主题


PLSQL编程:开始接触PLSQL时 ,认为PLSQL和SQL、MYSQL一样   只是纯粹的管理数据库    看书之后才发现错的离谱了,  其实PLSQL指的是:Procedural   Language  extensions  to the Structured Query Language,是Oracle公司为了克服SQL语言自身局限而发明的对于SQL语言的扩展语言。由于学过C++和JAVA,觉得PLSQL是和JAVA类似的一种开发语言(我甚至觉得在PLSQL中开发比JAVA更加的方便,个人感觉)。
  

  PLSQL最小的代码模块是块 ,一个块便是一组代码,一个块包含4部分:块头、声明单元、执行单元、异常处理单元

QQ图片20130727160535.jpg

块结构
    其中只有执行单元是必须的,其他都是可选的,而且执行单元至少有一条执行语句。其中块也分嵌套块  匿名块和命名块, 从名称中可以分辨三者之间的区别 顾名思义可得吗。块头没什么可说的  就是块的名称,声明部分大多是一些变量的声明,也可默认初始化值,执行单元是核心,也是块存在的意义所在,可以包括方法的实现、内嵌的块或者对数据的各种处理。异常处理单元负责处理执行部分可能产生的异常,并针对于各种不同的异常进行对于的处理,异常可以是系统内置的异常,也可以是用户自定义的异常。


    而后学习的是PLSQL的标识符和字符集,不加以赘述。

  

点评

有条理的总结非常好,赞一个!有纲领,有内容,有认识,有例子,能汇总,能展开,能拆成一个个的知识点,这样的技术帖子最是大家需要的,楼主加油!  发表于 2013/8/9 01:11

评分

参与人数 1努力值 +10 收起 理由
龙泉怪味豆 + 10

查看全部评分

发表于 2013/7/27 16:59:57 | 显示全部楼层
个人觉得好的编程习惯大有裨益,希望每个人都重视 ,楼主加油
 楼主| 发表于 2013/7/29 10:52:54 | 显示全部楼层
alexandre 发表于 2013/7/27 16:59
个人觉得好的编程习惯大有裨益,希望每个人都重视 ,楼主加油

谢谢支持!!!共同探讨
 楼主| 发表于 2013/7/29 13:02:39 | 显示全部楼层
本帖最后由 YUGENPING 于 2013/7/29 15:17 编辑

第二部分    PLSQL程序结构

首先讲述的是条件和顺序控制:if语句、case语句、goto语句

if语句中第一种也是最简单的便是if-then .. end  if(中间有空格)  养成习惯每次if-then  随后跟着end if 而且end if后面必须加上分号(;)
   if对条件进行判断  求值结果分为3种   TRUE FALSE或者null   当为TRUE时执行if-then后面的语句  否则不执行
if语句中第二种if-then .. else  ..end if   求值结果为FALSE或者NULL时执行else后面的语句

if语句中的最后一种便是if-then..elsif(需要注意的是,此处千万别写ELSEIF或者ELSE(中间有空格)IF,否则无法工作)

if嵌套语句与if语句类似   需要注意的地方就是逻辑一定要清晰
      PS:if语句求值中有短路的情况,也就是不必求出所有的值,比如条件中第一个求值为False,后面的便不用看了,该结果肯定是FALSE或者NULL了,执行语句便跳跃了then后面的语句,直接执行后面的语句
case语句第一种便是简单case语句,如下图所示

QQ图片20130729114104.jpg 其中,需要特别注意的是,至少有一个条件满足,不然会出现CASE_NOT_FOUND错误。

case语句第二种便是搜索型case语句  搜索型CASE语句会对一系列的布尔表达式求值,一旦求值结果为TRUE,就会执行关联的一系列语句,
CASE
WHEN expression1 THEN  statements1
WHEN expression2 THEN  statements2
WHEN expression3 THEN  statements3..
ELSE statements_else   
END  CASE;

第三种case语句便是嵌套了 ,不加于赘述。
写到这里    便想到了decode语句了,顺便插入写点关于decode的用法的见解。

DECODE函数是ORACLE PL/SQL的功能强大的函数之一,目前还只有ORACLE公司的SQL提供了此函数,其它数据库厂商的SQL实现还没有此功能。
DECODE的语法:DECODE(value,if1,then1,if2,then2,if3,then3,...,else),表示如果value等于if1时,DECODE函数的结果返回then1,...,如果不等于任何一个if值,则返回else。如果熟练之后便会发现decode函数确实很强大啊!!
GOTO语句用的比较少,觉得需要注意的便是,如果GOTO的标签语句是在本语句块前面的话,可能会产生死循环;一个标签后面至少跟着一个可执行语句。

其实应该还有NULL语句,NULL语句作用便是是的代码更加的清晰透明,增加可读性。


 楼主| 发表于 2013/7/29 15:12:38 | 显示全部楼层
本帖最后由 YUGENPING 于 2013/7/29 15:15 编辑

然后要讲述的便是循环结构:简单循环、for循环、while循环

简单循环又称无限循环,结构为LOOP..END LOOP;如果想跳出循环可通过exit或者exit when 或者return或者抛出异常,其他的没有需要注意的了。

for循环有两种,第一种是数字型循环
结构为:for  loop index  in  [REVERSE] number..highest number
               LOOP
                             executable statements
              END LOOP;
    循环从number开始到hightest number 结束,当结构中加上了REVERSE(注意:仍然是number..highest number结构不变)时,循环变得从大到小循环了,循环时候也可通过exit语句终止循环;循环也可以是非平滑增长,只需加入MOD函数。
mod函数是一个求余函数,其格式为: mod(nExp1,nExp2),即是两个数值表达式作除法运算后的余数。
    比如:FOR loop_index  in 1..100
              LOOP
                       IF MOD(loop_index,2)=0   ----每次增长为2,才执行THEN后面的语句
                         THEN ....;
                        END IF;
            END  LOOP;
第二种是游标型循环,是和一个显式游标或者是后面直接跟着Select语句,直接跟着Select语句不好维护,不推荐使用,大部分情况都是跟随显式游标吧。基本语法:
                      for  record   in  {cursor_name|explicit  select statment} ---每次隐式声明出来一个record记录
                      LOOP
                                                        executable statements
                                  END LOOP;

while循环:只要循环边界处定义的布尔条件结果是真,循环就会继续。正因为While循环执行不固定次数,所以如果无法提前确定循环次数的话,就可以使用While循环。
 楼主| 发表于 2013/7/30 13:29:57 | 显示全部楼层
本帖最后由 YUGENPING 于 2013/7/30 16:51 编辑

第二部分最后的就是异常了, 异常分为两种:自定义异常和系统异常。

    异常的生命过程为:定义异常、抛出异常、处理异常

   定义异常需要注意的是自定义异常,声明异常,最好把异常名称和错误代码关联在一起,使用EXCEPTION_INIT便可以实现,示例如下:
   PROCEDURE  my_procedure  
   IS
          TOO_MANY_STU   EXCEPTION;
          PRAGMA  EXCEPTION_INIT(TOO_MANY_STU,-1843)  ---数字不能是0或者除了100之外的任何正数,不可以使                             用 小于-1000000的负数,更不能使用  -1403(NO_DATA_FOUND错误的两个错误代码之一)
   BEGIN
        ...
  EXCEPTION
          WHEN TOO_MANY_STU
  END;
异常的作用范围也需要注意,异常类型区分异常的使用范围,如下图所示

                  QQ图片20130730111640.jpg
                  
  抛出异常有三种方式:数据库检测到错误时可以抛出、使用RAISE语句抛出异常、内置的RAISE_APPLICATION_ERROR过程抛出异常
  RAISE语句有3种形式:RAISE exception_name;     RAISE  package_name.exception_name;  RAISE;
  第一种可以抛出在当前块自定义的异常或者可以是包含这个块的外部块,也可是STANDARD包中定义的系统异常。
  第二种形式需要一个包名做限定符。如果异常是在包中声明(不是STANDARD包),又想抛出该异常,加入包名便可使用了。
  第三种形式使用的情形是在异常处理单元再次抛出同一个异常。

  RAISE_APPLICATION_ERROR(num  binary_integer,msg  varchar2,keeperrorstack  boolean default FALSE);
  num是错误号数值必须在-20999到-20000之间,msg是错误信息,不能超过2K字符(过长的话被忽略掉),keeperrorstack 表明是否想把错误添加到栈中。(这里不懂,求交流,求指教)
  
  异常处理用的最多的便是打印出SQLERRM和SQLCODE了,SQLERRM返回的是错误代码对应的错误信息,SQLCODE返回代码中最后一次抛出的错误代码,如果没有错误返回0,如果在异常句柄()之外调用SQLCODE,也是返回0.





点评

学习了。  发表于 2013/7/30 17:48
RAISE_APPLICATION_ERROR不懂 求指教!!  发表于 2013/7/30 13:32
发表于 2013/7/30 14:04:03 | 显示全部楼层
关注下,接触EBS这么久,刚开始的是也没有楼主这么积极学习过。

点评

个人资料里面设置的~~~  发表于 2013/7/31 19:31
怎么弄下面的签名的???  发表于 2013/7/30 16:24
有错误 请批评指教啊 这是对上周的学习的总结吧 !!  发表于 2013/7/30 16:19
 楼主| 发表于 2013/7/30 16:29:57 | 显示全部楼层
本帖最后由 YUGENPING 于 2013/7/30 16:44 编辑

第三部分    PLSQL数据
  
   本部分包括使用数据、基本数据类型、复合数据类型、其他数据类型
   
   首先要介绍的是使用数据,PLSQL中数据不区分大小写(除非被放在双引号里面);名称必须以字母开始,最长可以为30个字符;第一个字符之后可以使用的字符包括字母、数字、¥、#和_.
  数据命名保证能准确的反映用途,也得建立一致的、明显的命名规范。建议的规范命名如下图:
untitled.png
               
基本数据类型包括字符串、数字、日期类型
字符串通常使用的大部分是VARCHAR2型,使用情况如下图所示:

          QQ图片20130730163252.jpg
字符串有几点需要注意的是:
  1.如果本身带有单引号,就需要输入两次,这样:  '  I''m   ERP    IT'
  更好的方式是Q前缀(小写的也可以)上面的可以写成:Q'{ I'M  ERP  IT }'可以使用的分隔符包括[、{、<或者(中的一个,结束的分隔符与之对应就可以
2.如果要在代码中加入不可打印的字符,CHR函数特别有用,由于标准ASCII中换行符是10,CHR(10)便能是结果换行。
3.拼接字符串可以通过CONCAT函数或者拼接符(两条竖线  ||),均是把后面的拼接在前面的字符后面返回结果。
4.处理大小写函数,UPPER函数使其全部字符大写,LOWER函数使其全部字符小写,
5.字符串每个单词首字母大写 INITCAP,该函数格式化姓名时经常使用。
6.substr函数,substr(String,n1,n2)   返回的是String中从n1开始的n2个字符的字符串。

oracle必须掌握基本函数.txt

11.14 KB, 下载次数: 25, 下载积分: 努力值 -5 点

基本函数

 楼主| 发表于 2013/7/31 10:27:57 | 显示全部楼层
本帖最后由 YUGENPING 于 2013/7/31 10:58 编辑

数值型数据平时用到的包括number,pls_integer,binary_integer,simple_integer,binary_float,binary_double,simple_float和simple_double
number类型是Oracle以及PLSQL中最普通的数值型数据类型,可以保存任何尺度的整数、定点数或者浮点数。
number数据注意四舍五入,示例如下:
               number(9,2)的舍入值
QQ图片20130731092451.jpg
              number(9,11)的舍入值
   QQ图片20130731092405.jpg
  pls_integer和binary_integer从10g之后等同了,取值范围为-2147483648到2147483647。
  simple_integer和binary_integer有相同的取值范围,不过不允许为NULL,而且发生溢出时也不会抛出异常。
  binary_double和simple_float如下所示
QQ图片20130731105901.jpg   
数字转换:TO_NUMBER,TO_CHAR,CAST以及隐式转换
TO_NUMBER可以显示的把定长字符串按照可选的格式掩码转换成NUMBER数据类型
TO_NUMBER(String,[,format[,nls_params]]) String是字符串或者数字表现形式的BINARY_DOUBLE表达式
format可选的格式掩码,如果第一个参数是字符串的话,TO_NUMBER函数该如何把这个字符形式的数值解释成数字,nls_params可选,覆盖当前会话级别的NLS参数(不懂,什么叫NLS参数),搜索了下,NLS貌似是本地配置参数的一些基本信息
通过语句:select *  from nls_session_parameters查询,我得到的是:

1 NLS_LANGUAGE                          SIMPLIFIED CHINESE
2 NLS_TERRITORY                            CHINA
3 NLS_CURRENCY                              ¥
4 NLS_ISO_CURRENCY                     CHINA
5 NLS_NUMERIC_CHARACTERS         .,
6 NLS_CALENDAR                            GREGORIAN
7 NLS_DATE_FORMAT                            DD-MON-RR
8 NLS_DATE_LANGUAGE SIMPLIFIED        CHINESE
9 NLS_SORT             BINARY
10 NLS_TIME_FORMAT           HH.MI.SSXFF AM
11 NLS_TIMESTAMP_FORMAT                DD-MON-RR HH.MI.SSXFF AM
12 NLS_TIME_TZ_FORMAT                 HH.MI.SSXFF AM TZR
13 NLS_TIMESTAMP_TZ_FORMAT          DD-MON-RR HH.MI.SSXFF AM TZR
14 NLS_DUAL_CURRENCY          ¥
15 NLS_COMP BINARY
16 NLS_LENGTH_SEMANTICS            BYTE
17 NLS_NCHAR_CONV_EXCP               FALSE

TO_CHAR和TO_NUMBER函数相反,不加以赘述。
CAST可以把数字转换成字符串或者相反,常用格式是CAST(expression  AS  datatype),CAST的缺点就是不支持数字格式样本的使用。
隐式转换需要注意转换太多次带来的不必要的消耗。
数字函数也可在上一楼的附件(oracle必须掌握基本函数.txt)中找到简单的介绍。



 楼主| 发表于 2013/7/31 16:59:14 | 显示全部楼层
基本数据类型最后的便是日期类型了
长久以来唯一可用的日期时间数据类型就是DATE一种,自从Oracle 9i后,引入了3种全新的TIMESTAMP和两种全新的INTERVAL数据类型。
DATE:存储日期和时间,能精确到秒。不带时区信息。
TIMESTAMP:存储日期和时间,不带时区。时间精度可以到达十亿分之一秒,除了精度这一点之外,TIMESTAMP和DATE相同。
TIMESTAMP WITH TIME ZONE:存储时区、日期和时间。精度达到小数点后9位。
TIMESTAMP WITH LOCAL TIME ZONE:保存日期和精确到小数点后9位的时间,对时区敏感。
          返回当前日期和时间的函数的对比如下图:
     

函数对比图

函数对比图

在使用过程中可能会发现出现 ORA-01843: 无效的月份。
使用alter session set nls_date_language='american'     --以英语显示日期可以了,是因为识别不了英文形式的月份。
  1. DECLARE
  2.    dt      DATE;
  3.    ts      timestamp;
  4.    tstz    timestamp WITH TIME ZONE;
  5.    tsltz   timestamp WITH LOCAL TIME ZONE;
  6. BEGIN
  7.    dt := TO_DATE ('12/26/2005', 'mm/dd/yyyy');
  8.    ts := TO_TIMESTAMP ('24-Feb-2002 09.00.00.50 PM');
  9.    tstz :=
  10.       TO_TIMESTAMP_TZ ('06/2/2002 09:00:00.50 PM EST'
  11.                      , 'mm/dd/yyyy hh:mi:ssxff AM TZD'
  12.                       );
  13.    tsltz :=
  14.       TO_TIMESTAMP_TZ ('06/2/2002 09:00:00.50 PM EST'
  15.                      , 'mm/dd/yyyy hh:mi:ssxff AM TZD'
  16.                       );
  17.    DBMS_OUTPUT.put_line (dt);
  18.    DBMS_OUTPUT.put_line (ts);
  19.    DBMS_OUTPUT.put_line (tstz);
  20.    DBMS_OUTPUT.put_line (tsltz);
  21. END;
复制代码
。。。。。。没想法看日期类型了。。。好多啊。。。。






发表于 2013/7/31 19:30:18 | 显示全部楼层
本帖最后由 wxy0537 于 2013/7/31 19:31 编辑
wxy0537 发表于 2013/7/30 14:04
关注下,接触EBS这么久,刚开始的是也没有楼主这么积极学习过。

回复错了~~o(╯□╰)o~~  囧
 楼主| 发表于 2013/8/2 13:04:53 | 显示全部楼层
其他的数据类型包括布尔类型,ROWID,UROWID,lob和预定义类型布尔类型:TRUE,FALSE,NULL,需要注意的是布尔表达式结果为NULL时的执行语句,示例如下:
  1. DECLARE
  2.    report_requested   BOOLEAN;
  3. BEGIN
  4.    IF report_requested
  5.    THEN
  6.       NULL;                              --Executes if report_requested = TRUE
  7.    ELSE
  8.       NULL;                  --Executes if report_requested = FALSE or IS NULL
  9.    END IF;

  10.    IF NOT report_requested
  11.    THEN
  12.       NULL;                             --Executes if report_requested = FALSE
  13.    ELSE
  14.       NULL;                    --Executes if report_requeste = TRUE or IS NULL
  15.    END IF;

  16.    IF report_requested
  17.    THEN
  18.       NULL;                              --Executes if report_requested = TRUE
  19.    ELSIF NOT report_requested
  20.    THEN
  21.       NULL;                             --Executes if report_requested = FALSE
  22.    ELSE
  23.       NULL;                             --Executes if report_requested IS NULL
  24.    END IF;
  25. END;
复制代码
ROWID和UROWID:ROWID就是一个行标识符——用来表示数据库表中一行记录的物理地址的二进制值。一个ROWID可以唯一标识出数据库中的一行数据,即使这个表没有唯一键。UROWID是新类型的ROWID,U代表通用的,一个UROWID可以表示任何标的任何ROWID。
LOB定位符:指向数据库中的大对象数据的指针。
LOB的空和NULL:空LOB是指LOB定位符没有指向任何LOB数据,而NULL LOB列中连LOB定位符都没有。
要确定一个LOB是否包含数据,必须首先用IS  NULL测试来检查时候存在定位符,然后检查长度非零,或者同时检查:   IF NVL (DBMS_LOB.getlength
  1.    IF NVL (DBMS_LOB.getlength (some_clob), 0) = 0
  2.    THEN
  3.       -- There is no data
  4.       NULL;
  5.    ELSE
  6.       -- There is data
  7.       NULL;
  8.    END IF;
复制代码
预定义类型:XMLType、URI类型、Any类型
XMLType:内置的对象类型,通过该类型可以在数据库列或者PLSQL变量中保存XML文档。Oracle 9i的R1版本引入。
XQuery:用于提取和构造XML文档的查询语言,Oracle 10g的R2版本引入。
  1. CREATE TABLE fallsxml (fall_id NUMBER, fall XMLTYPE) --创建能装载XML数据的表
  2. /

  3. BEGIN      ----插入3条数据(3个文档)
  4.    INSERT INTO fallsxml
  5.        VALUES (
  6.                   1
  7.                 , xmltype.createxml('<?xml version="1.0"?>
  8.         <fall>
  9.            <name>Munising Falls</name>
  10.            <county>Alger</county>
  11.            <state>MI</state>
  12.            <url>
  13.               http://michiganwaterfalls.com/munising_falls/munising_falls.html
  14.            </url>
  15.         </fall>')
  16.               );

  17.    INSERT INTO fallsxml
  18.        VALUES (
  19.                   2
  20.                 , xmltype.createxml('<?xml version="1.0"?>
  21.         <fall>
  22.            <name>Au Train Falls</name>
  23.            <county>Alger</county>
  24.            <state>MI</state>
  25.            <url>
  26.               http://michiganwaterfalls.com/autrain_falls/autrain_falls.html
  27.            </url>
  28.         </fall>')
  29.               );

  30.    INSERT INTO fallsxml
  31.        VALUES (
  32.                   3
  33.                 , xmltype.createxml('<?xml version="1.0"?>
  34.         <fall>
  35.            <name>Laughing Whitefish Falls</name>
  36.            <county>Alger</county>
  37.            <state>MI</state>
  38.            <url>
  39.              http://michiganwaterfalls.com/whitefish_falls/whitefish_falls.html
  40.            </url>
  41.         </fall>')
  42.               );
  43. END;
复制代码
URI类型:HttpUriType、DBUriType、XDBUriType
HttpUriType:专门处理HTTP  URL(指向Web页面)
DBUriType:支持用XPath方式表达的URL
XDBUriType:支持指向Oracle XML DB对象的URL。XML DB是Oracle为其数据库内置的XML技术起的名字。



发表于 2013/8/7 14:31:32 | 显示全部楼层
刚从java转ebs开发,共勉。
发表于 2013/8/12 16:28:00 | 显示全部楼层
祝福楼主,同时也祝福自己
发表于 2013/8/13 14:48:02 | 显示全部楼层
ebs开发蛋疼路过。。。我今年才毕业,入ebs大坑,成长总是崎岖的,共勉
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|壹佰网 ERP100 ( 京ICP备12025635号 京ICP证120590号 )  

Copyright © 2005-2012 北京海之大网络技术有限责任公司 服务器托管由互联互通
手机:13911575376
网站技术点击发送消息给对方83569622   广告&合作 点击发送消息给对方27675401   点击发送消息给对方634043306   咨询及人才点击发送消息给对方138011526

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表