pl-sql如何执行简单的maxDate)函数

时间:2011-05-04 13:49:59

标签: sql oracle plsql ora-00933

您好 我是oracle db的新手,我怎么能简单地询问最大日期?

FUNCTION get_max_date_rec(
  i_value_date                  IN  vat.value_date%TYPE := app_utilities_q.server_sys_date )
RETURN vat.rec_id%TYPE
IS 
 v_date vat.value_date%TYPE; 
BEGIN

  SELECT  MAX(v.value_date)--compiler err
  INTO    v_date
  FROM    vat v 
  WHERE v.value_date < i_value_date 

  RETURN get_rec_by_date(v_date).rec_id;--compiler err

 END get_max_date_rec;

修改 这是编译器创建的错误 错误(76,7):PL / SQL:忽略SQL语句 错误(81,7):PL / SQL:ORA-00933:SQL命令未正确结束

我想按照上面的说法返回rec_id ......

2 个答案:

答案 0 :(得分:2)

FUNCTION get_max_date_rec(
  i_value_date  IN  vat.value_date%TYPE 
    default app_utilities_q.server_sys_date  -- assuming this is a default
  )
RETURN vat.rec_id%TYPE
IS 
 v_date vat.value_date%TYPE; 
BEGIN

  SELECT  MAX(v.value_date)--compiler err
  INTO    v_date
  FROM    vat v 
  WHERE v.value_date < i_value_date 

  RETURN v_date;

 END get_max_date_rec;

如果日期大于vati_value_date中没有记录,则一个风险是,代码将失败,抛出NO_DATA_FOUND异常。你应该考虑如何处理这种情况 - 或者不处理它,如果这是正确的事情。

答案 1 :(得分:2)

问题是 没有添加

;

在选择

的最后
  SELECT  MAX(v.value_date)--compiler err
  INTO    v_date
  FROM    vat v 
  WHERE v.value_date < i_value_date ;