急!一个存储过程出现问题,急等高手公司应用需要开发个东西,具体存储过程是这样的,现在出现了个问题,请看一下是为什么?谢谢
create or replace procedure PROC_STATIC_REGUSER_DAILY is
tmp_id number(18) ;
tmp_loginname varchar2(20);
tmp_usersource number(18);
tmp_static_date varchar2(256);
tmp_date date; cursor STATIC_REGUSER_DAILY_CURSOR_1 is
(select u.login_name,u.registered_date,u.user_source
from users u
where to_char(u.registered_date,'YYYY-MM-DD') = tmp_static_date);begin
tmp_static_date := to_char(sysdate-1,'YYYY-MM-DD');
open STATIC_REGUSER_DAILY_CURSOR_1;
loop
fetch
STATIC_REGUSER_DAILY_CURSOR_1
into
tmp_loginname,
tmp_date, ----------这里的时间变成了(26 -7月-09)?
tmp_usersource;
exit when STATIC_REGUSER_DAILY_CURSOR_1%notfound; select STATIC_REGUSER_DAILY_SEQ.Nextval into tmp_id from dual;
insert into STATIC_REGUSER_DAILY_TEMP(
ID,
LOGINNAME,
STATIC_DATE,
USERSOURCE
)
values(
tmp_id,
tmp_loginname,
tmp_date,
tmp_usersource
);
end loop;
close STATIC_REGUSER_DAILY_CURSOR_1;
commit;
end PROC_STATIC_REGUSER_DAILY;上面cursor查询出来的日期格式为什么没有用了?如果单个运行cursor内的查询,日期显示是YYYY-MM-DD的,但是定义的变量被赋值就赋成了26 -7月-09?
create or replace procedure PROC_STATIC_REGUSER_DAILY is
tmp_id number(18) ;
tmp_loginname varchar2(20);
tmp_usersource number(18);
tmp_static_date varchar2(256);
tmp_date date; cursor STATIC_REGUSER_DAILY_CURSOR_1 is
(select u.login_name,u.registered_date,u.user_source
from users u
where to_char(u.registered_date,'YYYY-MM-DD') = tmp_static_date);begin
tmp_static_date := to_char(sysdate-1,'YYYY-MM-DD');
open STATIC_REGUSER_DAILY_CURSOR_1;
loop
fetch
STATIC_REGUSER_DAILY_CURSOR_1
into
tmp_loginname,
tmp_date, ----------这里的时间变成了(26 -7月-09)?
tmp_usersource;
exit when STATIC_REGUSER_DAILY_CURSOR_1%notfound; select STATIC_REGUSER_DAILY_SEQ.Nextval into tmp_id from dual;
insert into STATIC_REGUSER_DAILY_TEMP(
ID,
LOGINNAME,
STATIC_DATE,
USERSOURCE
)
values(
tmp_id,
tmp_loginname,
tmp_date,
tmp_usersource
);
end loop;
close STATIC_REGUSER_DAILY_CURSOR_1;
commit;
end PROC_STATIC_REGUSER_DAILY;上面cursor查询出来的日期格式为什么没有用了?如果单个运行cursor内的查询,日期显示是YYYY-MM-DD的,但是定义的变量被赋值就赋成了26 -7月-09?
解决方案 »
- 除了游标还有什么办法可以循环表
- 怎样解决本地数据库自动更新保持与远程数据库相关表一致
- SQL plus查询不出数据
- 求一个函数--等同于sqlserver中str函数
- 求一份oracle所有的函数集合
- C#中调用oracle的存储过程出现问题!
- !!!!关于SqlServer移植到Oracle语法问题
- 求一个sql语句:我需要把表里的数据转成insert语句插入一张新的表。
- 急:想要在98机子上装oracle,哪里可下载oracle的个人版?
- 请问:SELECT MM_DEAL.CAN_REJ_DTE AS CANCEL_DTE, MM_DEAL.CAN_AUTH_DTE AS CANCEL_DTE, 为何不能用Order by CANCEL_DTE
- 帮我看看这个错:ORA-04042:
- SQL语句查询优化问题
查查STATIC_REGUSER_DAILY_TEMP表中STATIC_DATE字段赋值成功了吗?
而我取的值是yyyymmdd的 并且赋予变量值的原表中数据存在着yyyy-mm-dd hh24:mi:ss
但是插入的新表忽略了hh24:mi:ss只有26-7月-09
你查询表的时候,应该是用了 pl/sql 这样的工具吧,pl/sql 工具首选项设置里,可以修改日期显示格式,但是你的应用调用存储过程时,日期格式用的是服务器的默认格式,所以会看到 26-7月-09 这样的格式,但是只要你的类型都是 date 那就没关系,应用查询时,加上 to_char 格式化即可
第一种格式的数据时可以正常转过来的,而第二种的就不行了是吧
你可以对这个字段的长度(length)进行判断一下,如果<=10 则to_date('2009-07-30','YYYY-MM-DD')
否则 to_date(‘2009-07-30 17:31:00’,'YYYY-MM-DD hh24:mi:ss')这样应该就可以了