借这里的人气,问下大家一个简单的存储过程的问题,希望能大家能进来看下

my1982 2013-04-16 05:12:31
其实就是取当年的月份,以201301-201304 的格式,循环插入t_test表中, t_test中有一个字段timeny


CREATE OR REPLACE PROCEDURE test_ForlnLoop is
w_timeny varchar(100);
cursor test_cursor is SELECT TO_CHAR (ADD_MONTHS (TRUNC (SYSDATE, 'YYYY'), ROWNUM - 1),
'YYYYMM'
) TIMENY
FROM DUAL
CONNECT BY ROWNUM <= TO_NUMBER (TO_CHAR (SYSDATE, 'MM')) ORDER BY TIMENY DESC;
begin
for w_timeny in test_cursor loop
insert into t_test (timeny) VALUES (w_timeny);

end loop;
commit;
end;

执行的结果报错,报表达式类型错误,w_timeny


问下大家,应该怎么修改下,希望大家能帮下我
...全文
88 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
NIan_jun 2013-04-16
  • 打赏
  • 举报
回复

CREATE OR REPLACE PROCEDURE test_ForlnLoop is
  cursor test_cursor is
    SELECT TO_CHAR(ADD_MONTHS(TRUNC(SYSDATE, 'YYYY'), ROWNUM - 1), 'YYYYMM') TIMENY
      FROM DUAL
    CONNECT BY ROWNUM <= TO_NUMBER(TO_CHAR(SYSDATE, 'MM'))
     ORDER BY TIMENY DESC;
		w_timeny test_cursor%rowtype;

begin
  for w_timeny in test_cursor loop
   insert into t_test (timeny) VALUES (w_timeny);
  end loop;
  commit;
end;

shiyiwan 2013-04-16
  • 打赏
  • 举报
回复
CREATE OR REPLACE PROCEDURE TEST_FORLNLOOP IS
  --W_TIMENY VARCHAR(100);
  CURSOR TEST_CURSOR IS
    SELECT TO_CHAR(ADD_MONTHS(TRUNC(SYSDATE, 'YYYY'), ROWNUM - 1), 'YYYYMM') TIMENY
      FROM DUAL
    CONNECT BY ROWNUM <= TO_NUMBER(TO_CHAR(SYSDATE, 'MM'))
     ORDER BY TIMENY DESC;
BEGIN
  FOR W_TIMENY IN TEST_CURSOR LOOP
    INSERT INTO T_TEST (TIMENY) VALUES (W_TIMENY.TIMENY);
  
  END LOOP;
  COMMIT;
END;

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧