请教一个日期型数据的循环问题!谢谢!

[复制链接]
查看11 | 回复4 | 2007-8-9 20:13:55 | 显示全部楼层 |阅读模式
帮忙看下下面这条pl/sql的问题:我运行时老报错:
ORA-06550: line 10, column 16:
PLS-00382: expression is of wrong type
ORA-06550: line 10, column 2:
PL/SQL: Statement ignored
————————————————————————————
DECLARE
I_BEGIN_DATEDATE:='01-AUG-05';

I_END_DATEDATE:='10-AUG-05';
V_DATEDATE;

I NUMBER := 1;
BEGIN

V_DATE :=I_BEGIN_DATE;


DBMS_OUTPUT.PUT_LINE('V_DATE IS '||V_DATE);

--FOR V_DATE IN TO_CHAR('01-AUG-05','DD-MON-RR')..TO_CHAR('10-AUG-05','DD-MON-RR') LOOP

FOR V_DATE IN I_BEGIN_DATE..I_END_DATE LOOP

DBMS_OUTPUT.PUT_LINE(V_DATE);

V_DATE :=V_DATE +1;

END LOOP;
END;
回复

使用道具 举报

千问 | 2007-8-9 20:13:55 | 显示全部楼层
DECLARE
I_BEGIN_DATE DATE :=to_date('2005-08-01','yyyy-mm-dd');
I_END_DATE DATE :=to_date('2005-08-10','yyyy-mm-dd');
V_DATE DATE;
I NUMBER := 1;
BEGIN
V_DATE :=I_BEGIN_DATE;
DBMS_OUTPUT.PUT_LINE('V_DATE IS '||V_DATE);
while v_date<=i_end_date loop
--FOR V_DATE IN I_BEGIN_DATE .. I_END_DATE LOOP
DBMS_OUTPUT.PUT_LINE(V_DATE);
V_DATE :=V_DATE +1;
END LOOP;
END;
/
改成用while循环就可以了,你的错误:FOR V_DATE IN I_BEGIN_DATE .. I_END_DATE LOOP这里的IN后面类型不对,应该是两个整数
回复

使用道具 举报

千问 | 2007-8-9 20:13:55 | 显示全部楼层
最初由 lwxxrq 发布
[B]DECLARE
I_BEGIN_DATE DATE :=to_date('2005-08-01','yyyy-mm-dd');
I_END_DATE DATE :=to_date('2005-08-10','yyyy-mm-dd');
V_DATE DATE;
I NUMBER := 1;
BEGIN
V_DATE :=I_BEGIN_DATE;
DBMS_OUTPUT.PUT_LINE('V_DATE IS '||V_DATE);
while v_date<=i_end_date loop
--FOR V_DATE IN I_BEGIN_DATE .. I_END_DATE LOOP
DBMS_OUTPUT.PUT_LINE(V_DATE);
V_DATE :=V_DATE +1;
END LOOP;
END;
/
改成用while循环就可以了,你的错误:FOR V_DATE IN I_BEGIN_DATE .. I_END_DATE LOOP这里的IN后面类型不对,应该是两个整数 [/B]

谢谢!FOR后面不能跟日期型范围吗??
回复

使用道具 举报

千问 | 2007-8-9 20:13:55 | 显示全部楼层
是的,你这种for v_index in X .. XX loop的循环,循环的上下届只能是数字,或者是任何可以转换为数字的表达式。
回复

使用道具 举报

千问 | 2007-8-9 20:13:55 | 显示全部楼层
恩谢谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行