工作之后的日%积%月%累

来源:互联网 发布:程序员star法则简历 编辑:程序博客网 时间:2024/05/01 20:36

//*********************************20050804****************************************//
                                   ========
                                      ||
                                     /  /
                                      //
进酒时不可一进两————徐秀峰经理训言
利用PL/SQL将数据库中源数据导出导成EXECEL格式或者是TXT文本,然后到目标数据库上通过PB先删除目标数据库中的数据然后将已导出的数据文件导入(import),在删除目标数据库数据之前最好先将其导出保存。
社保中心的IP地址为172.16.64.131
医保中心的IP地址为202.96.255.250
sbds_verfile提供FTP下载控制的数据库
动态的得到dwo.name中文本的内容describe(dwo.name+'_t.text')
sqlca.sqlcode = 0代表数据库已成功连接
                                  //       //
                                   ========
//*********************************20050804****************************************//

//*********************************20050806****************************************//
                                   ========
                                      ||
                                     /  /
                                      //
Oracle中decode函数的用法:
例:
DECODE(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)
该函数的含义如下:
IF 条件=值1 THEN
    RETURN(翻译值1)
ELSIF 条件=值2 THEN
    RETURN(翻译值2)
    ......
ELSIF 条件=值n THEN
    RETURN(翻译值n)

ELSE
    RETURN(缺省值)
END IF
字符串子串:
substr(sbprint,1,1)
保存日志:
If gsys.save(Parent) = 0 Then Return
初始化界面:
gsys.tabpg_reset(parent)
操作内码生成:
sb_opseno.nextval
                                  //       //
                                   ========
//*********************************20050806****************************************//

//*********************************20050808****************************************//
                                   ========
                                      ||
                                     /  /
                                      //
实现关机:rundll32.exe user.exe,exitwindows
实现重启:rundll32.exe user.exe,restartwindows

SELECT * FROM TAB 功能:显示当前数据库下所有的表
PB的Database下连接好数据库后,在view——>layouts——>default下的ISQL Session中编辑SQL语句,并将结果导出成文本格式。
starteam团队开发协助软件
                                  //       //
                                   ========
//*********************************20050808****************************************//


//*********************************20050809****************************************//
                                   ========
                                      ||
                                     /  /
                                      //
--“类名”对应的数据窗口名
 select *
 from sbdc_pbquery
 where qycode in
 (
 select opflag1
 from sbds_submenu
 where menuname like '%查询%'
 );
 --“对象名”对应的数据窗口名
 select * from sbds_submenu  where menuname like '单位征缴台帐1';
                                   //       //
                                   ========
//*********************************20050809****************************************//


//*********************************20050810****************************************//
                                   ========
                                      ||
                                     /  /
                                      //
将SBDB_CPARCH表中的DPCODE字段的数据转换成4位字符型数据:
UPDATE  SBDB_CPARCH SET DPCODE=TRIM(TO_CHAR(DPCODE,'0000'));
create user object 可以用于创建预先定义好的类。
                                   //       //
                                   ========
//*********************************20050810****************************************//


//*********************************20050816****************************************//
                                   ========
                                      ||
                                     /  /
                                      //
EXP
SIIS/SIIS@SIIS
40960000
C:/DD.DMP
U
YES
YES
YES
到此完成步骤
---------------------
SQL> show user
USER is "SYSTEM"
SQL> exit


启动数据库:
[oracle@oradb /oracle]$ svrmgrl
SVRMGR> connect internal
Connected.
SVRMGR> startup
ORACLE instance started.
显示SGA状态
Database mounted.
Database opened.
SVRMGR>


关闭数据库:
[oracle@oradb /oracle]$ svrmgrl
SVRMGR> connect internal
Connected.
SVRMGR> stutdown
Database closed.
Database dismounted.
ORACLE instance shut down.
SVRMGR>


启动监听器
[oracle@oradb /oracle]$ lsnrctl
LSNRCTL> start
LSNRCTL> exit

停止监听器
[oracle@oradb /oracle]$ lsnrctl
LSNRCTL> stop
LSNRCTL> exit

查看监听器状态
[oracle@oradb /oracle]$ lsnrctl
LSNRCTL> status
LSNRCTL> exit

---------------------
数据库的备份:
1.在服务器端Windows NT网络操作系统中找到Oracle的安装目录:
如D:/oracle/  再进入Bin/子目录,鼠标左键双击 exp.exe 文件                  
或在Ms_Dos方式中进入Oralce安装目录中的Bin子目录,输入:exp [ENTER]
2.出现提示输入管理员用户名界面:
Export:Release 8.1.5.0.0-Production on Sun Oct 29 20:27:59 2000
<c> Copyright 1999 Oracle Corporation. All rights reserved.
Username:(此处输入管理员用户名)[ENTER]
3.出现提示输入管理员口令界面:
Password:(此处输入管理员口令)[ENTER]
4.出项备份选择界面。
Connected to : Oracle8i Enterprise Edition Release 8.1.5.0.0-Production
 With the Partitioning and Java options
PL/SQL Release 8.1.5.0.0 – Production
Enter array fetch buffer size: 4096 >[ENTER]
此处为选定备份时用于取数据行的缓冲尺寸。直接选定缺省值4096即可。
5.出现选择备份文件输出的位置和名称界面。
Export file:EXPDAT.DMP>D:/backup/xx20001029.dmp[ENTER]
在此之前,需要在操作系统D盘上建立一个名称为backup的文件夹。备注:最好把备份的文件名写成用户名加日期的方式,方便查询和恢复工作。
6.出现选择备份方式界面。
(1) E(ntire database),(2)U(sers),or (3)T(ables):(2)U>E[ENTER]
7.询问是否备份数据库内的授权
 Exprot grants(Yes/No):Yes>[ENTER]
8.询问是否备份基表内的数据
 Export table data(Yes/No):Yes>[ENTER]
9.询问是否是否压缩碎片数据段
 Compress extents(Yes/No):Yes>[ENTER]
10.About to export specifited users
 user to be exported :(Return to quit)>(输入数据库管理员名称)[ENTER]
 这样就完成了数据库的热备份。备份完数据后,系统会自动退出DOS界面。
11.最后在操作系统的D盘上的backup文件夹中将找到备份的名为xx20001029.dmp的
    文件。

数据库的恢复
1.在服务器端Windows NT网络操作系统中找到Oracle的安装目录:
 如D:/oracle/  再进入Bin/子目录,鼠标左键双击 imp.exe 文件                  或在Ms_Dos方式中进入Oralce安装目录中的Bin子目录,输入:imp [ENTER]
2.出现提示输入管理员用户名界面:
import:Release 8.1.5.0.0 -production on Sun Oct 29 21:57:47 2000
<c> Copyright 1999 Oracle Corporation. All rights reserved.
Username:(此处输入管理员用户名)[ENTER]
3.出现提示输入管理员口令界面:
Password:(此处输入管理员口令)[ENTER]
4.出项备份文件输入界面。
Import file:Expadat.dmp>D:/backup/xx20001029.dmp[ENTER]
5.选择数据插入的缓冲尺寸,选择缺省值,按回车即可。
Enter insert buffer size(minimum is 4096)30270>[ENTER]
6.Export file created by Export :U07.02.02,list contents of import file
only(Yes/No):no>[ENTER]
7.选择是否忽略数据恢复中出现的错误,回车即可。
 Ignore create error due to object existence (Yes/No):no>[ENTER]
8.选择是否恢复授权,选择缺省值,回车即可。
 Import grants(Yes/No):Yes>[ENTER]
9.选择是否恢复表数据, 选择缺省值,回车即可。
 Import table data (Yes/No):Yes>[ENTER]
10.选择是否输出整个文件。
    Import Entire export file (Yes/No):no>[ENTER]
11.输入用户名。
   Username>(此处输入数据库管理员名称)  ,然后等待系统进行数据库的恢复,
     恢复工作完成后,系统会自动退出DOS界面。
     这样,就完成了数据库的恢复。
在win2k server 和 oracle 817下的备份说明


exec glog.dbrol(594423);业务回滚
select * from sbdv_psarch where atcode='6000' and PSSTATUS='1';个体正常缴费。
 select * from sbdc_code where stype='ATCODE'
select * from sbdc_code where stype='ATCODE' and substr(scode,1,1)='6';   “自谋职业者”

                                   //       //
                                   ========
//*********************************20050816****************************************//

 


//*********************************20050819****************************************//
                                   ========
                                      ||
                                     /  /
                                      //
//数据迁移
//将sbor(土保用户)用户下的submenu程序导入导siis(社保用户)用户下的submenu中
insert into siis.sbds_submenu
select distinct  a.MENUCODE,a.MENUNAME,a.TPGNAME,a.MUEXPLAIN,a.OPFLAG1,a.OPFLAG2,a.AUFLAG,'','',a.PRSOURCE ,a.NEXTMENU ,a.NDWSOURCE,a.NDWTARGET,1,'','',''
from sbor.sbds_submenu a,sbor.sbds_subsys b ,sbor.sbds_mupopulate c
where a.menucode=c.menucode and c.syscode=b.syscode and b.syscode like '7%'

将土保程序中的程序导入到PB9下需要更新转化,并重新编译一下。
                                   //       //
                                   ========
//*********************************20050819****************************************//

 

//*********************************20050820****************************************//
                                   ========
                                      ||
                                     /  /
                                      //
将低版本(PB6.5)的程序升级到高版本(PB9.0)的程序步骤如下:
1、打开程序(用Library);
2、为应用程序新建一个PBW;
3、双击打开应用程序,在跳出的窗口中选择是;
4、点击NEXT,进入SET LIBRARY SEARCH PATH,点击...按钮进入 Select Library选中全部,然后打开;
5、点击NEXT;
6、点击FINISH;
7、跳出的Migrate Application窗口中点击OK即可。

                                   //       //
                                   ========
//*********************************20050820****************************************//


//*********************************20050820****************************************//
                                   ========
                                      ||
                                     /  /
                                      //
//版本号更新程序
select * from sbds_verfile where ftype='VER';
update sbds_verfile set fpath='正2005081801' where ftype='VER';
commit;
select * from sbds_verfile where ftype='VER';

//从库中查找下一条sb_auseno的下一条数据值
 SELECT sb_auseno.nextval FROM DUAL;
                                   //       //
                                   ========
//*********************************20050820****************************************//

//*********************************20050829****************************************//
                                   ========
                                      ||
                                     /  /
                                      //
//单位注销里面有如下一条SQL查询数据
select count(*)  into :li_cnt2  from
(select count(*)
from sbda_cparacdt c,sbda_cpftacdt b
where c.acseno=b.acseno(+)  and c.trym<>0
and   c.cpseno=:ld_cpseno
group by c.pdcode,c.cpseno
having sum(distinct c.arfd)-nvl(sum(b.ftfd),0)>0);
//可以简化成如下语句,效果相同效率更加高
(select count(*) into :li_cnt2
from sbda_cparacdt c, sbda_cpftacdt b
where c.acseno=b.acseno(+)  and c.trym<>0 //“(+)”意思为外连接
and   c.cpseno=:ld_cpseno
group by c.pdcode,c.cpseno
having sum(distinct c.arfd)-nvl(sum(b.ftfd),0)>0); //“ftfd”为实缴金额,“arfd”为应缴金额
                                   //       //
                                   ========
//*********************************20050829****************************************//

//*********************************20050830****************************************//
                                   ========
                                      ||
                                     /  /
                                      //
//四种模式:
普通型:通过后缀来确定查询条件
范围型:通过确定一个范围来作为查询条件
查询型:输入编码后自动查询出相关内容后再作为查询条件进行查询
下拉框型:输入查询条件时是通过下拉框里面选择合适的查询条件的查询。
                                   //       //
                                   ========
//*********************************20050830****************************************//

//*********************************20050906****************************************//
                                   ========
                                      ||
                                     /  /
                                      //
单位综合查询调用函数gf_qryconarg;
操作日志表显示的项目由sbds_submenu的prsource列指出,控制时,只需对其值进行修改即可;
数据窗口的更新使用dw_name.reset()实现,其中系统库中自定义了初始化函数gsys.tabpg_reset(parent)
                                   //       //
                                   ========
//*********************************20050906****************************************//

//*********************************20050908****************************************//
                                   ========
                                      ||
                                     /  /
                                      //
//当两个表要连接并且其中一个表里面没有数据,并且使用“=”可。能导致连接后没有数据时,需使用外连接。


//原湖州市企业退休待遇审核表PB端SQL代码
//注:使用Freeform模式的数据窗口
select a.psseno,a.cpcode,a.cpname,a.psname,a.sex,a.bdate,a.iscode,a.wkdate,a.maddr,a.tel,
         a.rtdate,a.wtcode,a.totyears,a.acctsave,a.acpssave,a.rpindex,a.bfidyears,
         b.p1,b.p2,b.p3,b.p4,b.p5,b.p6,b.p7,b.p8,a.sacode,c.sname,opname
from  sbdv_rtarch a,sbds_users d,
         (select psseno,
                  sum(decode(crcode,'3830',dvalue,0)) p1,
                  sum(decode(crcode,'3010',dvalue,0)) p2,
                  sum(decode(crcode,'3020',dvalue,0)) p3,
                  sum(decode(crcode,'3150',dvalue,0)) p4,
                  sum(decode(crcode,'0111',dvalue,0)+decode(crcode,'0112',dvalue,0)) p5,
                  sum(decode(crcode,'3265',dvalue,0)) p6,
                  sum(decode(crcode,'7020',dvalue,0)) p7,
      sum(decode(crcode,'7990',dvalue,0)) p8
            from  sbdt_rtaulist
           where  psseno = :ad_psseno
           group by psseno ) b,
   (select '('||SNAME||')' sname , SCODE from sbdc_code where stype='OCTYPE' and (sacode='00' or sacode=sauser)) c  
where  a.ps = b.psseno and a.octype=c.SCODE(+) and rtrim(d.opcode)=user

//修改后湖州市企业退休待遇审核表PB端SQL代码
//注:使用N-Up类型的数据窗口
select a.crcode,b.crname,a.dvalue
from  sbdt_rtaulist a,sbdc_ckrules b
where  a.psseno = :ad_psseno and b.sccode=9200 and a.crcode=b.crcode
 and a.crcode in (1003,3010,3020,3030,3130,3140,3150,3269,3265,3270,3790)
                                   //       //
                                   ========
//*********************************20050906****************************************//

//*********************************20050913****************************************//
                                   ========
                                      ||
                                     /  /
                                      //
//Oracle里面判断语句可以用如下函数:NVL(Parameter,result1,result2)
例如:NVL(date,to_date(trim('2005-09-13')),0),
其效果如同以下IF判断语句:
If date=to_date(trim('2005-09-13')) Then
 return to_date(trim('2005-09-13'))
Else
 return 0
End If;
                                   //       //
                                   ========
//*********************************20050913****************************************//

//*********************************20050914****************************************//
                                   ========
                                      ||
                                     /  /
                                      //
1、ORACLE的时间加法
to_char(column1,'YYYY-MM-DD HH24:MI:SS') + 时间值。
例1:
                如果要加上1天,则使用date+1;
                如果加上1小时,则使用date+1/24;
                如果加上1分钟,则使用date+1/(24*60);
                如果加上1秒钟,则使用date+1/(24*60*60)。
例2:
 select add_months(datefield,6) from tabname
例3:
 select sysdate,sysdate + interval '6' month from dual;
2、FOR 循环
FOR counter IN [REVERSE] start_range....end_range LOOP
statements;
END LOOP;
FOR循环的循环次数是固定的,counter是一个隐式声明的变量,他的初始值是start_range,第二个值是start_range+1,直到end_range,如果start_range等于end _range,那么循环将执行一次。如果使用了REVERSE关键字,那么范围将是一个降序。〕

3、从整个数据库中取得当前用户下的所有用户表的“表名”可以利用如下语句获得:
 select * from col --获得的数据中有列的列号
 select * from cols --获得的数据中没有列的列号
4、从整个数据库中获得当前用户下所有的表中的“列”可以利用如下语句获得: 
 select * from tab
 例:SELECT cname AS colb FROM col WHERE tname = UPPER ('tablename');
5、oracle里面可以直接用select {sequence_name}.nextval from dual来获得一个唯一递增的序列号
6、假设你定义的游标叫C_cursor,用 C_cursor%rowcount 就可以返回游标推进的行数了。也可以用隐式游标  SQL%ROWCOUNT。
7、IBM、毕博、埃森哲是世界著名咨询公司
                                  //       //
                                   ========
//*********************************20050914****************************************//

//*********************************20050814****************************************//
                                   ========
                                      ||
                                     /  /
                                      //
湖州市医院接口监控程序配置步骤:
以下以本机作为监控程序为例进行详细描述:
1、首先配置并启动本机数据库,例如:serversiis,并启动数据库实例siis,(该实例下面有一个用户名叫DBO,登陆密码为DBO,模拟医院中心接口数据库);
2、配置Oracle中的NETWORK下的TNSNAMES(例如98yy)将IP地址指向医院(例如:九八医院:172.18.224.14)的前置机上,并输入其数据库名(例如九八医院:ORADB);
3、打开监控程序,在配置文件中输入配置文件的信息,如数据库类型设置为Oracle,服务名设置为98yy,用户名为医院前置机用户登陆名,即dbo,最后输入口令即可;
4、配置完成后重启监控程序即完成监控程序的配置和启动过程。
接下来配置监控程序连接医保中心的参数(这里以本地ORACLE作为医保中心模拟服务器进行配置,在实际应用中只需将相应的IP地址和Oracle的用户指向医保中心即可):
5、在监控程序中启动后,在参数设置选项中选择通讯参数选项,并将医保中心的IP地址写入“医保中心前置机器名(或IP地址)”和“本机与医保中心连接IP地址”选项中,(这里由于是本机作为医保中心服务器,因此输入127.0.0.1)选择确定即可;
6、启动socket程序(名为scktsrvr.exe)。启动通讯程序服务器(名为server.exe),并在系统参数里面设置指向医保中心接口数据库,(这里指向本地siis实例下的dbo用户)。

注意事项:医院的业务端的机子指向医院的数据库,只有监控指向前置机监控程序所在的服务器端。

|————————|     |————————|
| 医保中心数据库 |     | 医保中心数据库 |
|————————|     |————————|
    / /           / /
     |            |
     |            |
    / /           / /
|————————|-|  |-|—————————|
| 医保中心服务器 |医|  |医|   医院服务器     |
|————————|保|       |院|—————————|
| 医保通讯服务器 |前| <———>  |前|  医保通讯客户端  |
|————————|置|      |置|—————————|
|   医保监控器   |机|      |机|    医保监控器    |
|————————|-|  |-|—————————|
 / /     / /
  |      |
  |      |
 / /     / /
|————————|     |————————|
|  医保业务终端  |     |  医院业务终端  |
|————————|     |————————|
                                  //       //
                                   ========
//*********************************20050814****************************************//

 

//*********************************20050913****************************************//
                                   ========
                                      ||
                                     /  /
                                      //
路由添加语句:
route ADD 202.96.251.0 MASK 255.255.255.0   192.168.101.254 METRIC 1

Active Routes:
Network Destination        Netmask          Gateway       Interface  Metric
          0.0.0.0     mask 0.0.0.0  192.168.101.250  metric 1 if 192.168.101.110
          0.0.0.0          0.0.0.0   202.96.255.250  192.168.101.110      1
        127.0.0.0        255.0.0.0        127.0.0.1       127.0.0.1       1
    192.168.101.0    255.255.255.0  192.168.101.110  192.168.101.110      1
  192.168.101.110  255.255.255.255        127.0.0.1       127.0.0.1       1
  192.168.101.255  255.255.255.255  192.168.101.110  192.168.101.110      1
     202.96.251.0    255.255.255.0   192.168.101.25  192.168.101.110      1
     202.96.255.0    255.255.255.0   192.168.101.25  192.168.101.110      1
        224.0.0.0        224.0.0.0  192.168.101.110  192.168.101.110      1
  255.255.255.255  255.255.255.255  192.168.101.110  192.168.101.110      1
Default Gateway:   192.168.101.250
===========================================================================
Persistent Routes:
  Network Address          Netmask  Gateway Address  Metric
     202.96.255.0    255.255.255.0   192.168.101.25       1
     202.96.251.0    255.255.255.0   192.168.101.25       1
     202.96.255.0    255.255.255.0  192.168.101.254       1

医保中心上网IP:
202.96.78.91
202.96.78.254

202.96.101.110
202.96.101.254

每日更新程序的控制语句:
connect siis/siis@siis223
select * from sbds_verfile where ftype='VER';
update sbds_verfile set fpath='正2005101101' where ftype='VER';
commit;
select * from sbds_verfile where ftype='VER';

connect siis/siis@siis61
select * from sbds_verfile where ftype='VER';
update sbds_verfile set fpath='正2005101101' where ftype='VER';
commit;
select * from sbds_verfile where ftype='VER';


                                   //       //
                                   ========
//*********************************20050913****************************************//


专管员控制:opflag字段,(sbds_submenu)

 

 

20051124
如果跳出客户端未配置,则查找相应的数据窗口,在脚本中加入init语句,实例:如在人员综合查询模块中constructor中加入gsys.dw_init(tab_1.tabpage_6.dw_14)语句.
人员综合查询中新增一个查询项目和数据窗口,需要在selected函数中加入相应的retrieve语句.如:tab_1.tabpage_6.dw_14.retrieve(id_psseno)

黑名单序列号连续
create or replace procedure Blacklist_sequence is
I INTEGER;
J INTEGER;
mx_txid INTEGER;
begin
  j:=0;
  SELECT max(txid) into mx_txid FROM HI_BLACKLIST;
  for temp in 391..mx_txid
  loop
      SELECT COUNT(*) INTO I FROM HI_BLACKLIST WHERE TXID=TEMP;
      IF I=0 THEN
         insert into hi_blacklist values('001','001','9',TEMP,'2','1');
         J:=J+1;
      END IF;
  end loop;
  INSERT INTO DBO.Sequence_Blacklist VALUES(J,sysdate);
  COMMIT;
end Blacklist_sequence;

20051219
政策性变动,算法表:sbdc_ckrules

原创粉丝点击