以字符串作为参数的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;
答案 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_timestamp
或localtimestamp
添加一个时间间隔,而不是像date
那样sysdate
1}}。另一方面,如果您不需要小数秒或时区,只需返回date
而不是timestamp
就足够了。
答案 2 :(得分:1)
另一种方法是:
SELECT systimestamp + HorizonWindowMinutes * Interval '1' MINUTE
INTO RETVALUE
FROM DUAL;