算是一篇鼓励自己继续前行的回忆录吧

算是一篇鼓励自己继续前行的回忆录吧

阅读《Oracle优化日记:一个金牌DBA的故事》,顺便翻看了往日的日记本,感觉自己错误了这15年时间,
2006.3进入了一家所谓500强Emerson - 做AC/DC、DC/DC做了一颗螺丝钉,相当于转行了啊,不知道是不愿意承认还是什么,
现在心里不知啥滋味,错过了这黄金般的时间啊。
2005年做JDE的二次报表开发,没咨询顾问,短时间看完了那2本关于报表的打印书,其他还有好多没空看,
接触了一段时间的Oracle,感觉PL/SQL不怎么好用,不过时常更新,喜欢Toad for Oracle但是感觉当时还是挺着迷的(主要是看Oracle的一些帮助文件比较方便),
翻看了一下往日的日记大约还有JDE 报表大约10几篇 | 10几篇Asktom上的文章,不过后来都早忘了,^_^,感慨万千,现在都不记得了。

jdewards.free.fr        (法语站点,似乎进不去了...)
www.jdetips.com      (刚输入链接,该链接还活着啊...)
www.jdefans.com     (当时时不时访问这个站点,似乎早就挂掉了...)
www.erpforum.net    (后来冒出来的,模仿上面的站点,抄袭吧,感觉比较讨厌它)

为了弄清楚表之间的关系,当时就哗啦啦的用个程序导出那些表结构

获取表结构的语句
------------------------------------------------------------------------------------------------------------------------------
-- Table Columns 
select tdobnm "Table Name",
       simd,
       tdsqlc "SQL Column Name",
       frdsca "Data Dictionary Description",
       drdl01 "Data Type Description",
       frdtas "Item Size",
       tdobnd "Data Dictionary Alias",
       frowdi "Data Item",
       frowtp "Data Type Code",
       tdpseq "Seq Number"
  from obj7334.f9860, pd7334.f98711
  left join dd7334.f9203 on trim(frdtai) = trim(tdobnd)
                        and trim(frlngp) is null
                        and trim(frsyr) is null
                        and trim(frscrn) is null
  left join dd7334.f9210 on trim(frdtai) = trim(tdobnd)
  left join prodctl.f0005 on drsy = 'H98'
                         and drrt = 'DT'
                         and trim(drky) = trim(frowtp)
 where siobnm = tdobnm
 order by tdobnm
------------------------------------------------------------------------
--查某个表结构的SQL、并排序
select tdobnm "Table Name",
       simd,
       tdsqlc "SQL Column Name",
       frdsca "Data Dictionary Description",
       drdl01 "Data Type Description",
       frdtas "Item Size",
       tdobnd "Data Dictionary Alias",
       frowdi "Data Item",
       frowtp "Data Type Code",
       tdpseq "Seq Number"
  from obj7334.f9860, pd7334.f98711
  left join dd7334.f9203 on trim(frdtai) = trim(tdobnd)
                        and trim(frlngp) is null
                        and trim(frsyr) is null
                        and trim(frscrn) is null
  left join dd7334.f9210 on trim(frdtai) = trim(tdobnd)
  left join prodctl.f0005 on drsy = 'H98'
                         and drrt = 'DT'
                         and trim(drky) = trim(frowtp)
 where siobnm = tdobnm and trim(tdobnm)='F0101'
 order by tdpseq
--得到当前汇率的代码
create or replace function GetCurrencyRate(mycrcd in varchar,
                                           mycrdc in varchar) return number is
  crcd  varchar(3);
  crdc  varchar(3);
  mycrr number;

begin
  crcd := mycrcd;
  crdc := mycrdc;

  select f0015.cxcrr
    from (select cxcrcd, cxcrdc, max(dt) dt
            from (select cxcrcd,
                         cxcrdc,
                         TO_DATE(convertodate(cxeft), 'YYYY-MM-DD') dt,
                         cxcrr
                    from proddta.f0015
                   where TO_DATE(convertodate(cxeft), 'YYYY-MM-DD') <=
                         sysdate
                     and trim(cxcrcd) = crcd
                     and trim(cxcrdc) = crdc
                   group by cxcrcd, cxcrdc, cxeft, cxcrr
                   order by cxcrcd) rate
           group by cxcrcd, cxcrdc) mytab,
         proddta.f0015 f0015
   where mytab.cxcrcd = f0015.cxcrcd
     and mytab.cxcrdc = f0015.cxcrdc
     and mytab.dt = TO_DATE(convertodate(f0015.cxeft), 'YYYY-MM-DD');
  return mycrr;
end

---------------------------------------------------------------------
create or replace procedure mab is

declare  handle utl_file.file_type;
  v_diff number;
  cursor cur_test is
    select trim(imlitm) || ' | ' || trim(imdsc1) || ' | ' ||
           councs / 10000 || ' | 0 | 0 | 0 | 0 | 0'
      from proddta.f4101, proddta.f4102
      left join proddta.f4105 on ibitm = coitm
                             and ibmcu = comcu
                             and coledg = '07'
     where imitm = ibitm
       and trim(ibmcu) in ('FE01')
     order by imlitm;
begin
  v_diff := dbms_utility.get_time;
  handle := utl_file.fopen('c:\test', 'ma.txt', 'w');
  for v_rid in cur_test loop
    utl_file.put_line(handle, v_rid.f000);
  end loop;

  v_diff := dbms_utility.get_time - v_diff;
  dbms_output.put_line('execute time:' || to_char(v_diff));
  utl_file.fclose(handle);

end mab;
--儒略日期转公历函数


create or replace function converToDate(strDate in number) return varchar2 is
  Mcenture varchar2(1);
  Myear    varchar2(4);
  Mdays    varchar2(3);
  Mintyear integer;
  Mintdays integer;
  Mmonth   varchar2(2);
  Mday     integer;
  Mstrday  varchar2(6);
  Mdate    varchar(12);
begin
  Mcenture := substr(to_char(strdate), 1, 1);
  Myear    := substr(to_char(strdate), 2, 2);
  Mdays    := substr(to_char(strdate), 4, 3);

  Mintyear := to_number(Myear);
  Mintdays := to_number(Mdays);

  if (Mcenture = '1') then
    Myear := '20' || Myear;
  else
    Myear := '19' || Myear;
  end if;

  Mmonth := '01';
  Mday   := 1;

  if (mod(Mintyear, 400) = 0 or
     (Mod(Mintyear, 4) = 0 and Mod(Mintyear, 100) <> 0)) then
    if (Mintdays > 0 and Mintdays <= 31) then
      Mmonth := '01';
      Mday   := Mintdays;
    elsif (Mintdays > 31 and Mintdays <= 60) then
      Mmonth := '02';
      Mday   := Mintdays - 31;
    elsif (Mintdays > 60 and Mintdays <= 91) then
      Mmonth := '03';
      Mday   := Mintdays - 60;
    elsif (Mintdays > 91 and Mintdays <= 121) then
      Mmonth := '04';
      Mday   := Mintdays - 91;
    elsif (Mintdays > 121 and Mintdays <= 152) then
      Mmonth := '05';
      Mday   := Mintdays - 121;
    elsif (Mintdays > 152 and Mintdays <= 182) then
      Mmonth := '06';
      Mday   := Mintdays - 152;
    elsif (Mintdays > 182 and Mintdays <= 213) then
      Mmonth := '07';
      Mday   := Mintdays - 182;
    elsif (Mintdays > 213 and Mintdays <= 244) then
      Mmonth := '08';
      Mday   := Mintdays - 213;
    elsif (Mintdays > 244 and Mintdays <= 274) then
      Mmonth := '09';
      Mday   := Mintdays - 244;
    elsif (Mintdays > 274 and Mintdays <= 305) then
      Mmonth := '10';
      Mday   := Mintdays - 274;
    elsif (Mintdays > 305 and Mintdays <= 335) then
      Mmonth := '11';
      Mday   := Mintdays - 305;
    elsif (Mintdays > 335 and Mintdays <= 366) then
      Mmonth := '12';
      Mday   := Mintdays - 335;
    end if;
  else
    if (Mintdays > 0 and Mintdays <= 31) then
      Mmonth := '01';
      Mday   := Mintdays;
    elsif (Mintdays > 31 and Mintdays <= 59) then
      Mmonth := '02';
      Mday   := Mintdays - 31;
    elsif (Mintdays > 59 and Mintdays <= 90) then
      Mmonth := '03';
      Mday   := Mintdays - 59;
    elsif (Mintdays > 90 and Mintdays <= 120) then
      Mmonth := '04';
      Mday   := Mintdays - 90;
    elsif (Mintdays > 120 and Mintdays <= 151) then
      Mmonth := '05';
      Mday   := Mintdays - 120;
    elsif (Mintdays > 151 and Mintdays <= 181) then
      Mmonth := '06';
      Mday   := Mintdays - 151;
    elsif (Mintdays > 181 and Mintdays <= 212) then
      Mmonth := '07';
      Mday   := Mintdays - 181;
    elsif (Mintdays > 212 and Mintdays <= 243) then
      Mmonth := '08';
      Mday   := Mintdays - 212;
    elsif (Mintdays > 243 and Mintdays <= 273) then
      Mmonth := '09';
      Mday   := Mintdays - 243;
    elsif (Mintdays > 273 and Mintdays <= 304) then
      Mmonth := '10';
      Mday   := Mintdays - 273;
    elsif (Mintdays > 304 and Mintdays <= 334) then
      Mmonth := '11';
      Mday   := Mintdays - 304;
    elsif (Mintdays > 334 and Mintdays <= 365) then
      Mmonth := '12';
      Mday   := Mintdays - 334;
    end if;
  end if;

  if (Mday < 10) then
    Mstrday := '0' || to_Char(Mday);
  else
    Mstrday := to_Char(Mday);
  end if;

  if to_char(strDate) = '0' then
    Mdate := '1900-01-01';
  else
    Mdate := Myear || '-' || Mmonth || '-' || Mstrday;
  end if;
  return Mdate;
end;

 

posted @ 2020-06-05 20:43  CDPJ  阅读(179)  评论(0编辑  收藏  举报