求助!!PLS-00103错误,调了一下午,不知道哪错了就..

生煮鸡蛋 2013-08-19 06:46:19
这是我写的一个存储过程,然后一直报错
PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following:

:= . ( % ;
麻烦帮忙看看是哪里错了,谢谢
CREATE PROCEDURE "SXPM"."CM_GSM_COUNTRY_JIHUABU_P"
/**
* Auther : yangbx
* Cdate : 2013-08-19
* 项目
*/
(GRADING in number,--粒度
TIME in varchar2,--日期
V_RS out PKG_PUB_RS.RS
)is
SQLSTR varchar2(20000);
L_START_DATE date;
L_END_DATE date;
L_DATE date;

begin

select TO_DATE(TIME, 'yyyy-mm-dd') into L_DATE from DUAL;

if GRADING = 0 then --月粒度

select TRUNC(L_DATE, 'MONTH'),last_day(trunc(L_DATE,'MONTH'))
into L_START_DATE, L_END_DATE
from DUAL;

elsif GRADING = 1 then --周粒度

--根据日期计算出本周
select TRUNC(L_DATE, 'd') + 1, TRUNC(L_DATE, 'd') + 7
into L_START_DATE, L_END_DATE
from DUAL;

elsif GRADING = 2 then --天粒度

select L_DATE,L_DATE
into L_START_DATE, L_END_DATE
from DUAL;

end if;

SQLSTR :='select L_DATE 时间,
CITY_NAME 地市,
COUNTRY 区县,
'''' 覆盖面积,
AVG(JIZHAN_SHIWAI_CHENGSHI) 基站数,
AVG(XIAOQU_SHIWAI_CHENGSHI) 小区数,
AVG(ZAIPIN_SHIWAI_CHENGSHI) 载频数,
AVG(JIZHAN_SHINEI_CHENGSHI) 基站数,
AVG(XIAOQU_SHINEI_CHENGSHI) 小区数,
AVG(ZAIPIN_SHINEI_CHENGSHI) 载频数,
'''' 覆盖面积,
AVG(JIZHAN_SHIWAI_NONGCUN) 基站数,
AVG(XIAOQU_SHIWAI_NONGCUN) 小区数,
AVG(ZAIPIN_SHIWAI_NONGCUN) 载频数,
AVG(JIZHAN_SHINEI_NONGCUN) 基站数,
AVG(XIAOQU_SHINEI_NONGCUN) 小区数,
AVG(ZAIPIN_SHINEI_NONGCUN) 载频数,
'''' 覆盖面积,
AVG(XIAOQU_SHIWAI) 宏站个数,
AVG(XIAOQU_SHINEI) 室分个数,
AVG(XIAOQU) 小区个数,
AVG(ZAIPIN) 载频总数
from SXPM.CM_GSM_COUNTRY_JIHUABU
where COLLECT_DATE>=:L_START_DATE and COLLECT_DATE<=:L_END_DATE
group by L_DATE,CITY_NAME,COUNTRY';

open V_RS for SQLSTR using L_START_DATE,L_END_DATE;
end;
...全文
135 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
生煮鸡蛋 2013-08-21
  • 打赏
  • 举报
回复
引用 1 楼 f_ky 的回复:
一般提示报错的时候会告诉说出现在代码的第几行,最好也一并贴出来!!! 简单看了下: “ SQLSTR :='select L_DATE 时间, ” 如果没理解错的话,你这里是想取一个常量,那这么写就是错误的!!!
嗯,嘿嘿,那天发出帖子之后才发现这个错误,哈哈,太粗心了,谢谢你啦
pobaby 2013-08-20
  • 打赏
  • 举报
回复
CREATE PROCEDURE "SXPM"."CM_GSM_COUNTRY_JIHUABU_P"(GRADING IN NUMBER, --粒度
                                                   TIME    IN VARCHAR2, --日期
                                                   V_RS    OUT PKG_PUB_RS.RS) IS
  SQLSTR       VARCHAR2(20000);
  L_START_DATE DATE;
  L_END_DATE   DATE;
  L_DATE       DATE;

BEGIN

  SELECT TO_DATE(TIME, 'yyyy-mm-dd') INTO L_DATE FROM DUAL;

  IF GRADING = 0 THEN
    --月粒度
  
    SELECT TRUNC(L_DATE, 'MONTH'), LAST_DAY(TRUNC(L_DATE, 'MONTH'))
      INTO L_START_DATE, L_END_DATE
      FROM DUAL;
  
  ELSIF GRADING = 1 THEN
    --周粒度
  
    --根据日期计算出本周  
    SELECT TRUNC(L_DATE, 'd') + 1, TRUNC(L_DATE, 'd') + 7
      INTO L_START_DATE, L_END_DATE
      FROM DUAL;
  
  ELSIF GRADING = 2 THEN
    --天粒度
  
    SELECT L_DATE, L_DATE INTO L_START_DATE, L_END_DATE FROM DUAL;
  
  END IF;

  SQLSTR := 'select L_DATE                           时间,
                     CITY_NAME                        地市,
                     COUNTRY                          区县,
                     ''''                              覆盖面积,    
                     AVG(JIZHAN_SHIWAI_CHENGSHI)      基站数,
                     AVG(XIAOQU_SHIWAI_CHENGSHI)      小区数,
                     AVG(ZAIPIN_SHIWAI_CHENGSHI)      载频数,
                     AVG(JIZHAN_SHINEI_CHENGSHI)      基站数,      
                     AVG(XIAOQU_SHINEI_CHENGSHI)      小区数,
                     AVG(ZAIPIN_SHINEI_CHENGSHI)      载频数,
                     ''''                              覆盖面积,    
                     AVG(JIZHAN_SHIWAI_NONGCUN)        基站数,
                     AVG(XIAOQU_SHIWAI_NONGCUN)        小区数,
                     AVG(ZAIPIN_SHIWAI_NONGCUN)        载频数,
                     AVG(JIZHAN_SHINEI_NONGCUN)        基站数,      
                     AVG(XIAOQU_SHINEI_NONGCUN)        小区数,
                     AVG(ZAIPIN_SHINEI_NONGCUN)        载频数,
                     ''''                              覆盖面积,    
                     AVG(XIAOQU_SHIWAI)                宏站个数,
                     AVG(XIAOQU_SHINEI)                室分个数,
                     AVG(XIAOQU)                      小区个数,
                     AVG(ZAIPIN)                      载频总数
              from SXPM.CM_GSM_COUNTRY_JIHUABU
              where COLLECT_DATE>=:L_START_DATE and COLLECT_DATE<=:L_END_DATE
              group by L_DATE,CITY_NAME,COUNTRY';

  OPEN V_RS FOR SQLSTR
    USING L_START_DATE, L_END_DATE;
END;
wumugulu 2013-08-20
  • 打赏
  • 举报
回复
一般提示报错的时候会告诉说出现在代码的第几行,最好也一并贴出来!!! 简单看了下: “ SQLSTR :='select L_DATE 时间, ” 如果没理解错的话,你这里是想取一个常量,那这么写就是错误的!!!

17,377

社区成员

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

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