您的位置:首页 > 数据库 > Oracle

oracle 存储过程中文问题

2009-03-10 11:46 148 查看
 这几天遇见个很棘手的问题.

 经过几天的原因分析查找,终于把问题给解决的.不知道大家也是否遇见过.很简单的但有可能你会忽略.

大家有什么更好的方法 大家一起共享.

我写了这样一个存储过程:

 create or replace procedure AUTO_CBD_HOLIDAY(inTime in varchar2) is

cursor cur_cbd_id is

select c.cbd_id from clear_by_day cwhere C.PLM_ID and

((to_char(C.BEGIN_TIME,'day')='星期六' or to_char(C.BEGIN_TIME,'day')='星期日') 

and c.BEGIN_TIME>=add_months(to_date(inTime||-1,'yyyy-mm-dd'),1) and

c.BEGIN_TIME<=last_day(add_months(to_date(inTime||-1,'yyyy-mm-dd'),1)) );

var_cbd_id varchar2(10); --日清id

 begin

open cur_cbd_id;

loop

FETCH cur_cbd_id into var_cbd_id;

EXIT WHEN cur_cbd_id%NOTFOUND;

update clear_by_day c set c.cbd_state='3' where c.cbd_id=var_cbd_id;

if sqlcode = 0 then

Commit;

else

Rollback;

end if;

end loop;

 end AUTO_CBD_HOLIDAY;

 以上过程在PLSQL Developer工具中每次都能正确的执行,而且速度相当快.但是在java程序中调用这个过程时每次都不生效.后来我换的一种形式处理.就是把 to_char(C.BEGIN_TIME,'day')='星期六' or to_char(C.BEGIN_TIME,'day')='星期日' 改成 to_char(C.BEGIN_TIME,'d')='7' or to_char(C.BEGIN_TIME,'d')='1'
 问题就解决的.

 大家以后在用oracle的时候 对于中文的问题的特加注意!问题终于解决,真爽.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: