oracle - PLS-00201 : identifier 'D.HOLIDAY_DATE' must be declared

标签 oracle plsql syntax-error

这是我的代码:

DECLARE
V_loop                  number(2); -------declare the loop times

begin 

looptimes(V_loop); ------set the forcast times from parameter table
loop 
       IF V_loop > 0 ------forcast 
       THEN 
            IF to_char((sysdate+V_loop-7),'dd/mon/yy') not like To_chat((d.holiday_date),'dd/mon/yy')----------condition that perivous 'day' not holiday
                then
                      insert into local_rm16(tni, lr, frmp, day, hh, volume)
                      SELECT TNI, LR, FRMP, sysdate+v_loop, HH, AVG(VOLUME)
                      FROM V_nem_rm16,DBP_holiday d
                      where to_char(day, 'Day') = to_char(sysdate+V_loop, 'Day')
                      group by day,hh, lr, frmp,tni
                      order by 1;
                 else 
                      exit;
                 end if;
                      V_loop := V_loop -1;
        ELSE 
             exit;
        ENd if;


END loop;
end;
我不知道如果有条件怎么宣布假期,谁能帮我,谢谢

最佳答案

  • 您编写的是to_chat而不是to_char:
    IF to_char((sysdate+V_loop-7),'dd/mon/yy') not like To_chat((d.holiday_date),'dd/mon/yy')
  • 在定义d之前不能使用它。它在SELECT中定义为DBP_holiday表的别名,但是您早先在IF表达式中使用了它。您应该再次考虑您的代码,因为您不能像这样做(也许您应该考虑使用cursor loop)。
  • 关于oracle - PLS-00201 : identifier 'D.HOLIDAY_DATE' must be declared,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23125943/

    相关文章:

    java - 挣扎着用spring SimpleJdbcCall调用Oracle函数

    oracle - 在oracle中为逗号分隔值创建catsearch索引

    mysql - 如何在同一个表中添加两行并减去一行?

    xml - PLSQL 从 XML 读取值?

    jquery - 如何处理不返回 JSON 的 JSON 请求?

    php - 我在字符串连接线解析错误: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in [closed]中遇到此错误

    java - tomcat 8.5.x tomcat-jdbc.jar 与官方 oracle ojdbc6.jar 驱动程序

    sql - Oracle 11g CREATE VIEW 使用 CONNECT BY 和多个表

    xml - 从 XML 到 Oracle PL/SQL 环境中的路径列表

    python - 在命令提示符下运行python的语法错误