工作总结(1)

来源:互联网 发布:阿里云oss下载文件 编辑:程序博客网 时间:2024/04/27 16:58

10.24

oracle触发器

苏州sample表更新barcodedate字段。用触发器更新老数据

CREATE OR REPLACE TRIGGER tr_logon2
AFTER update on ground_tb_del_barcode

FOR EACH ROW
declare
 update_tp_sample_search varchar(1024);
BEGIN

 
   update_tp_sample_search := 'update ground_tb_sample set barcodedate='''||:new.barcodedate||''' where sampleid=(select cd.sampleid
    from Ground_Tp_Create_Data cd where cd.samplebarcode='''||replace(:new.barcode,'''','')||''')'; 
   execute immediate update_tp_sample_search;
  
END tr_logon2;

//ground_tb_del_barcode 表中的barcode带有双引号,而cd表中不带。用replace函数去掉来匹配。

触发器建立后。update ground_tb_del_barcode 表中的新建字段(state)来触发该触发器。以达到更新目的


12.17

mysql获取自动增长的ID

LAST_INSERT_ID 是与table无关的,如果向表a插入数据后,再向表b插入数据,LAST_INSERT_ID会改变。

一般情况下获取刚插入的数据的id,使用select max(id) from table 是可以的。

但在多线程情况下,就不行了。在多用户交替插入数据的情况下max(id)显然不能用。

这就该使用LAST_INSERT_ID了,因为LAST_INSERT_ID是基于Connection的,只要每个线程都使用独立的Connection对象,LAST_INSERT_ID函数将返回该Connection对AUTO_INCREMENT列最新的insert or update操作生成的第一个record的ID。这个值不能被其它客户端(Connection)影响,保证了你能够找回自己的 ID 而不用担心其它客户端的活动,而且不需要加锁。


14.2.25

Oracle 存储过程 (苏州条码扫描,sample表中每天定时更新barcodedate)


create or replace procedure p_barcodedate
as
cursor cur is
select  cd.samplebarcode,cd.sampleid  from ground_tp_create_data cd where cd.sampleid  
in (select s.sampleid from ground_tb_sample s where s.sampleid is null);


v_samplebarcode varchar2(1024);     ----变量不要跟数据库字段同名字,否则sql可能失败
v_barcodedate varchar2(1024);
v_batch varchar2(1024);
v_sampleid NUMBER;
begin
 for r1 in cur loop
   v_samplebarcode :=r1.samplebarcode;
   v_sampleid :=r1.sampleid;
   v_barcodedate :='';
   v_batch :='';

begin
select db.batch into v_batch from ground_tb_del_barcode db where db.barcode like '%'||v_samplebarcode||'%';   ----引用变量
exception          ----加入exception防止出现没有对应数据报错而跳出循环,下面的数据也无法执行
 when no_data_found then
     v_batch :='';
     
     end;
begin
select to_char(dbc.operdate,'yyyy-mm-dd')  into v_barcodedate from ground_tb_del_barcodecount dbc where dbc.batch=v_batch and rownum=1; ---rownum=1表示只取一次
exception
 when no_data_found then
    v_barcodedate :='';
end;
if  v_barcodedate is not null then

update ground_tb_sample s set s.barcodedate=to_date(v_barcodedate,'yyyy-mm-dd') where s.sampleid=v_sampleid;
else 
update ground_tb_sample s set s.barcodedate='' where s.sampleid=v_sampleid;
end if;
commit;


   end loop;
  commit;
   end p_barcodedate;



对以上存储过程加入定时执行的job:

   variable job_bcdate number;
begin
  sys.dbms_job.submit(job => :job_bcdate,
                      what => 'p_barcodedate;',
                      next_date => TRUNC(sysdate+1), ----每天凌晨12点执行存储过程  
                      interval => 'TRUNC(sysdate+1)');  
  commit;
end;
/     ----该job在命令窗口执行


以下为有关job执行时间和相关方法

  1. 1:每分钟执行  
  2. Interval => TRUNC(sysdate,'mi') + 1/ (24*60) --每分钟执行  
  3. interval => 'sysdate+1/(24*60)'  --每分钟执行  
  4. interval => 'sysdate+1'    --每天  
  5. interval => 'sysdate+1/24'   --每小时  
  6. interval => 'sysdate+2/24*60' --每2分钟  
  7. interval => 'sysdate+30/24*60*60'  --每30秒  
  8. 2:每天定时执行  
  9. Interval => TRUNC(sysdate+1)  --每天凌晨0点执行  
  10. Interval => TRUNC(sysdate+1)+1/24  --每天凌晨1点执行  
  11. Interval => TRUNC(SYSDATE+1)+(8*60+30)/(24*60)  --每天早上8点30分执行  
  12. 3:每周定时执行  
  13. Interval => TRUNC(next_day(sysdate,'星期一'))+1/24  --每周一凌晨1点执行  
  14. Interval => TRUNC(next_day(sysdate,1))+2/24  --每周一凌晨2点执行  
  15. 4:每月定时执行  
  16. Interval =>TTRUNC(LAST_DAY(SYSDATE)+1)  --每月1日凌晨0点执行  
  17. Interval =>TRUNC(LAST_DAY(SYSDATE))+1+1/24  --每月1日凌晨1点执行  
  18. 5:每季度定时执行  
  19. Interval => TRUNC(ADD_MONTHS(SYSDATE,3),'q')  --每季度的第一天凌晨0点执行  
  20. Interval => TRUNC(ADD_MONTHS(SYSDATE,3),'q') + 1/24  --每季度的第一天凌晨1点执行  
  21. Interval => TRUNC(ADD_MONTHS(SYSDATE+ 2/24,3),'q')-1/24  --每季度的最后一天的晚上11点执行  
  22. 6:每半年定时执行  
  23. Interval => ADD_MONTHS(trunc(sysdate,'yyyy'),6)+1/24  --每年7月1日和1月1日凌晨1点  
  24. 7:每年定时执行  
  25. Interval =>ADD_MONTHS(trunc(sysdate,'yyyy'),12)+1/24  --每年1月1日凌晨1点执行  
  26.   
  27. 相关方法:  
  28. 修改要执行的操作:dbms_job.what(jobno,'sp_fact_charge_code;');  --修改某个job名  
  29. 修改下次执行时间:dbms_job.next_date(job,next_date);  
  30. 修改间隔时间:dbms_job.interval(job,interval);   
  31. 停止job:dbms.broken(job,broken,nextdate);   
  32. dbms_job.broken(v_job,true,next_date);        --停止一个job,里面参数true也可是false,next_date(某一时刻停止)也可是sysdate(立刻停止)。    
  33. */  


14.3.13

form中无法直接插入form。用如下方法  

var ab = $('<form id="text"></form>');
ab.html($("#ttjxx_show_tab"+row_id));

ab.serialize();    //序列化form


14.3.18

birt 报表内存溢出问题:设置tomcat的初始内存:



2014.4.18

mysql 不能取别名的问题:

jdbcUrl=jdbc:mysql://127.0.0.1:3306/health?useOldAliasMetadataBehavior=true

 

原创粉丝点击