ORACLE 12C DBMS_SCHEDULER.SET_ATTRIBUTE需要在当前时间加延时时间执行,延时以分钟数是变量,如何写这个带变量的延时的时间?
时间: 2024-03-19 09:45:23 浏览: 117
您可以使用Oracle中的sysdate函数以及INTERVAL DAY TO SECOND语法来实现带变量的延时时间。具体的SQL语句如下:
```
DECLARE
v_delay_min NUMBER := 10; -- 延时时间,单位为分钟
v_delay_interval INTERVAL DAY(0) TO SECOND(0);
BEGIN
SELECT NUMTODSINTERVAL(v_delay_min, 'MINUTE') INTO v_delay_interval FROM DUAL;
DBMS_SCHEDULER.SET_ATTRIBUTE('job_name', 'DELAY', SYSDATE + v_delay_interval);
END;
```
在上面的代码中,我们首先定义了一个变量v_delay_min,表示延时时间,单位为分钟。然后使用NUMTODSINTERVAL函数将延时时间转换为INTERVAL DAY TO SECOND类型,并将结果赋值给v_delay_interval变量。最后使用DBMS_SCHEDULER.SET_ATTRIBUTE函数设置任务的延时时间为当前时间加上v_delay_interval变量的值。
注意,在使用DBMS_SCHEDULER.SET_ATTRIBUTE函数时,第三个参数表示任务的下一次运行时间,因此我们需要将当前时间和延时时间相加来计算出任务的下一次运行时间。
相关问题
ORACLE 12C DBMS_SCHEDULER.SET_ATTRIBUTE需要在当前时间加延时时间执行,用变量如何写这个延时的时间?
在Oracle 12c中,您可以使用INTERVAL DAY TO SECOND数据类型来表示延时时间。以下是一个示例代码:
```
DECLARE
l_delay INTERVAL DAY(2) TO SECOND(0);
BEGIN
l_delay := INTERVAL '5' MINUTE;
DBMS_SCHEDULER.SET_ATTRIBUTE('job_name', 'DELAY', l_delay);
END;
```
在上面的示例中,我们首先声明了一个名为l_delay的INTERVAL DAY TO SECOND类型的变量,该变量可以保存2位数的日数和0位数的秒数。然后,我们将5分钟的延时时间赋值给该变量。最后,我们使用DBMS_SCHEDULER.SET_ATTRIBUTE过程将延时时间设置为任务的属性。
请注意,您可以根据需要更改INTERVAL DAY TO SECOND数据类型中的日数和秒数位数。例如,如果您需要更长的延时时间,可以将DAY(2)更改为DAY(3)或更高,并将SECOND(0)更改为SECOND(1)或更高。
阅读全文