1

你好,我是 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 ...

4

2 回答 2

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;

一个风险是,如果不vat存在大于 的日期的记录i_value_date,则代码将失败,引发NO_DATA_FOUND异常。您应该考虑您可能希望如何处理这种情况——或者不处理它,如果这是正确的做法。

于 2011-05-04T17:14:12.593 回答
2

问题没有添加

;

在选择的最后

  SELECT  MAX(v.value_date)--compiler err
  INTO    v_date
  FROM    vat v 
  WHERE v.value_date < i_value_date ;
于 2011-05-05T14:16:07.493 回答