在sql查询

时间:2015-07-07 19:20:09

标签: oracle plsql

以字符串作为参数的Oracle PL / SQL函数。

在语句的“选择”部分中包含此参数的正确语法是什么。

功能是:

create or replace function GetHorizonTime(HorizonWindowMinutes IN VARCHAR2) 
return timestamp
IS
  RETVALUE TIMESTAMP;
BEGIN
  SELECT SYSDATE + Interval '''||HorizonWindowMinutes||''' MINUTE INTO RETVALUE
    FROM DUAL;
  RETURN RETVALUE;
END;
/

SELECT GetHorizonTime('720') FROM DUAL;

select语句应转换为:

SELECT SYSDATE + Interval '720' MINUTE INTO RETVALUE
    FROM DUAL;

3 个答案:

答案 0 :(得分:3)

  create or replace function GetHorizonTime(HorizonWindowMinutes IN NUMBER) 
   return timestamp
   IS
     RETVALUE TIMESTAMP;
BEGIN
  RETURN (SYSDATE + HorizonWindowMinutes/1440);
END;
/

答案 1 :(得分:2)

使用numToDSInterval function而不是构建区间文字

create or replace function GetHorizonTime(HorizonWindowMinutes IN NUMBER) 
  return timestamp
IS
BEGIN
  return SYSDATE + numtodsinterval( HorizonWindowMinutes, 'minute' );
END;
/

如果您正在使用timestamp数据类型,我通常会向current_timestamplocaltimestamp添加一个时间间隔,而不是像date那样sysdate 1}}。另一方面,如果您不需要小数秒或时区,只需返回date而不是timestamp就足够了。

答案 2 :(得分:1)

另一种方法是:

SELECT systimestamp  + HorizonWindowMinutes * Interval '1' MINUTE 
INTO RETVALUE
FROM DUAL;