waterye

#

Spring JDBC's Bug

听过多次投诉Spring JDBC有bug, 今天自己总算遇到.

String querySql = "......"// 400行左右
Object[] params = new Object[] { beginDate, endDate,  beginDate, endDate, beginDate, endDate, beginDate, endDate, beginDate, endDate} ;
return getJdbcTemplate().query(querySql, params, new OracleRowMapper());

设置10个参数时, 导致出现ora-00932错误, 而在sqlplus or pl/sql developer中正常运行, 改成拼字符串后正常.

Spring的版本为1.2.2, 具体原因还未查找, 估计是Spring JDBC的bug

posted @ 2006-01-05 00:13 waterye 阅读(766) | 评论 (0)编辑 收藏

Happy New Year!

Happy New Year To Everyone!

posted @ 2005-12-31 18:04 waterye 阅读(489) | 评论 (1)编辑 收藏

使用utl_file包进行io操作

1. 首先要创建目录
CREATE DIRECTORY log_dir AS 'd:/ora_log';

2. 写log
DECLARE
  p_dir       
varchar2(100);
  p_filename  
varchar2(100);
  output_file utl_file.file_type;
begin
  p_dir       :
= 'log_dir';
  p_filename  :
= 'log_' || to_char(sysdate, 'yyyy_mm_dd_HH24_MI_SS'|| '.txt';
  output_file :
= utl_file.fopen(upper(p_dir), p_filename, 'w');
  
delete from test;
  utl_file.put(output_file, 'test:  ' || SQL%ROWCOUNT || ' rows deleted.');

  utl_file.new_line(output_file);
  
insert into test
    
select * from test@remotedb;
  utl_file.put(output_file, 
'test:  ' || SQL%ROWCOUNT || ' rows inserted.');
  utl_file.new_line(output_file);
  utl_file.fclose(output_file);
  
commit;
EXCEPTION
  
WHEN OTHERS THEN
      utl_file.put(output_file, 'error: ' || to_char(sysdate, 'yyyy-mm-dd HH24:MI:SS'));
      utl_file.new_line(output_file);
      utl_file.put(output_file, 'SQLCODE:'||SQLCODE);
      utl_file.new_line(output_file);
      utl_file.put(output_file, 'SQLERRM:'||SQLERRM);
      utl_file.new_line(output_file);
      utl_file.fclose(output_file);   
    
ROLLBACK;
end;
/

参考:
1. PL/SQL Packages and Types Reference
2. AskTom
3. Itpub

posted @ 2005-12-31 17:57 waterye 阅读(851) | 评论 (0)编辑 收藏

通过Database Links访问Remote Database

-- create database link
create database link remotedb connect to user identified by pwd using 'remotedb';

-- access remote object
select * from test@remotedb;

参考: SQL Reference

posted @ 2005-12-31 15:27 waterye 阅读(1163) | 评论 (0)编辑 收藏

使用DBMS_SCHEDULER定时执行任务

The DBMS_JOB package has been superseded by the DBMS_SCHEDULER package.

create job
BEGIN
  DBMS_SCHEDULER.CREATE_JOB(job_name      
=> 'delete_goods_job',
                            job_type      
=> 'STORED_PROCEDURE',
                            job_action    
=> 'delete_goods',
                            repeat_interval 
=> 'FREQ=SECONDLY; INTERVAL=6',
                            enabled       
=> true,
                            comments      
=> 'delete goods data'                  
                            );
END;
/
drop job
BEGIN
    DBMS_SCHEDULER.DROP_JOB(job_name 
=> 'delete_goods_job'); 
END;
/
disable job
BEGIN
    DBMS_SCHEDULER.DISABLE(name 
=> 'delete_goods_job'); 
END;
/
enable job
BEGIN
    DBMS_SCHEDULER.ENABLE(name 
=> 'delete_goods_job'); 
END;
/
select jobs
select * from USER_SCHEDULER_JOBS;
query logs(感谢itpub的teddyboy)
select * from ALL_SCHEDULER_JOB_RUN_DETAILS
where owner = 'SCOTT'
order by log_date desc
delete logs
delete from ALL_SCHEDULER_JOB_RUN_DETAILS
where owner = 'SCOTT'

参考:
1. PL/SQL Packages and Types Reference
2. http://www.itpub.net/378320.html

posted @ 2005-12-30 18:42 waterye 阅读(1498) | 评论 (0)编辑 收藏

PL/SQL中显示DML操作结果

SET SERVEROUTPUT ON;
BEGIN    
    
delete from t;
    dbms_output.put_line(
't:  ' || SQL%ROWCOUNT || ' rows deleted.');     
    
COMMIT;
EXCEPTION
  
WHEN OTHERS THEN
    
ROLLBACK;
END;
/

参考: PL/SQL User's Guide and Reference

posted @ 2005-12-30 13:55 waterye 阅读(565) | 评论 (0)编辑 收藏

PL/SQL Transaction

spool log.txt;
select to_char(sysdate, 'yyyy-mm-dd HH24:MI:SS'from dual;
BEGIN    
    
delete from t where id = 2;
    
delete from abc where id = 5;     
    
COMMIT;
EXCEPTION
  
WHEN OTHERS THEN
    
ROLLBACK;
END;
/
select to_char(sysdate, 'yyyy-mm-dd HH24:MI:SS'from dual;
spool 
off;

参考: PL/SQL User's Guide and Reference

posted @ 2005-12-29 12:13 waterye 阅读(648) | 评论 (0)编辑 收藏

查看所有表的记录数

select 'select ''' || tname || ''' , count(rowid) from  ' || tname || ';' from tab where tabtype = 'TABLE';

运行上面的查询结果可以查看所有表的记录数

SQL*Plus:
SQL>set feedback off;
SQL
>set heading off;
SQL
>spool count.sql
SQL
>select 'select ''' || tname || ''' , count(rowid) from  ' || tname || ';'  from tab where tabtype = 'TABLE';
SQL
>spool off;

posted @ 2005-12-27 17:27 waterye 阅读(1456) | 评论 (0)编辑 收藏

IntelliJ IDEA Companion Products

http://www.jetbrains.com/companions/index.html

Refactor-J
 $49, Refactor-X  $39, Insepction-JS $49

感觉有点奢侈, 实用性不高(有待进一步实践), 安装后并没有快捷键, 需要自定义

posted @ 2005-12-20 12:06 waterye 阅读(605) | 评论 (0)编辑 收藏

行列互换

     摘要: 使用sql进行行列互换  阅读全文

posted @ 2005-12-17 01:32 waterye 阅读(859) | 评论 (0)编辑 收藏

仅列出标题
共18页: First 上一页 6 7 8 9 10 11 12 13 14 下一页 Last