add_months Oracle存储过程

时间:2017-05-10 17:23:09

标签: sql oracle timestamp

我想将x年份添加到时间戳变量并将其重新分配给相同的变量,就像这样(但不起作用)

d_TIMESTAMP := add_months(d_TIMESTAMP,-360);

我收到错误

  

错误(48,13):PLS-00103:遇到符号" ="当期望以下之一时:常量异常表long double ref char time timestamp interval date二进制国家字符nchar符号""取代了" ="接着说。

2 个答案:

答案 0 :(得分:0)

您需要添加与您要添加的年数相对应的月数。例如,如果要添加一年,则需要添加12个月。试试这个。

d_TIMESTAMP := ADD_MONTHS(d_TIMESTAMP, 12);

有关ADD_MONTHS的更多信息:https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions004.htm

答案 1 :(得分:0)

d_TIMESTAMP是输入变量,因此无法在代码中修改它。将变量设为IN OUT变量可以解决问题。像这样: p_TIMESTAMP IN OUT然后: SELECT ADD_MONTHS(p_TIMESTAMP,-360) INTO p_TIMESTAMP FROM DUAL;