周三

main()函数的返回值类型是int型的,而程序最后的 return 0; 正与之遥相呼应,0就是main()函数的返回值。那么这个0返回到那里呢?返回给操作系统,表示程序正常退出。因为return语句通常写在程序的最后,不管返回什么值,只要到达这一步,说明程序已经运行完毕。而return的作用不仅在于返回一个值,还在于结束函数。

现在我们来做一个小试验(注意:本人的系统是Windows XP, 编译环境是TC)来观察main()函数的返回值。编写如下代码并编译运行:

//a.c
#include "stdio.h"
int main(void)
{
    printf("I love you.");
    return 0;
}
将这个文件保存为a.c,编译运行后会生成一个a.exe文件。现在打开命令提示符,在命令行里运行刚才编译好的可执行文件,然后输入   echo %ERRORLEVEL% ,回车,就可以看到程序返回 一个0 。如果把 return 0; 改为 return 99; ,那么很显然,再次执行上述步骤以后你可以看到程序返回99。要是你这样写 return 99.99; 那还是返回99,因为99.99被传给操作系统之前,被强制类型转换成整数类型了。

现在,我们把a.c改回原来的代码,然后再编写另一个程序b.c:

//b.c
#include "stdio.h"
int main(void)
{
    printf("
I’m too.");
    return 0;
}
编译运行后打开命令提示符,在命令行里输入a&&b 回车,这样你就可以看到《人鬼情未了》里面经典的爱情对白:

I love you.

I’m too.

&& 的含义是:如果 && 前面的程序正常退出,则继续执行 && 后面的程序,否则不执行。所以,要是把a.c里面的 return 0; 删除或者改为 return 99; ,那么你只能看到 I love you. 。也就是说,程序b.c就不执行了。现在,大家该明白 return 0; 的作用了吧。
在 Oracle 数据库中,若希望某个任务或查询每周三定时执行,可以通过 `DBMS_JOB` 或更推荐的 `DBMS_SCHEDULER` 包来实现。以下分别介绍两种方式的实现方法。 ### 使用 `DBMS_JOB` 设置每周三执行任务 虽然 `DBMS_JOB` 更适合简单的定时任务,但其在设置复杂周期性任务时不够灵活。若希望任务在每周三执行,可以通过 `NEXT_DAY` 函数指定下一个周三的日期,并结合 `NEXT_DAY` 与 `SYSDATE` 的组合实现周期性执行。 示例:创建一个在每周三凌晨 2:00 执行的任务: ```sql DECLARE v_job NUMBER; BEGIN DBMS_JOB.SUBMIT( job => v_job, what => 'BEGIN your_procedure; END;', next_date => NEXT_DAY(SYSDATE, 'WEDNESDAY') + 2 / 24, -- 下一个周三凌晨2点 interval => 'NEXT_DAY(SYSDATE, ''WEDNESDAY'') + 2 / 24' ); COMMIT; END; / ``` 该任务将在每周三的 2:00 AM 执行一次,并在下一次周三重复执行。 ### 使用 `DBMS_SCHEDULER` 设置每周三执行任务 相较于 `DBMS_JOB`,`DBMS_SCHEDULER` 提供了更强的调度能力和更清晰的语法结构,适合用于设置复杂的周期性任务。 示例:创建一个每周三凌晨 2:00 执行的任务: ```sql BEGIN DBMS_SCHEDULER.create_job ( job_name => 'WEDNESDAY_JOB', job_type => 'PLSQL_BLOCK', job_action => 'BEGIN your_procedure; END;', start_date => NEXT_DAY(SYSDATE, 'WEDNESDAY') + 2 / 24, repeat_interval => 'FREQ=WEEKLY; BYDAY=WED; BYHOUR=2; BYMINUTE=0; BYSECOND=0', enabled => TRUE ); END; / ``` 上述代码定义了一个名为 `WEDNESDAY_JOB` 的任务,它将在每周三的 2:00 AM 执行,使用 `FREQ=WEEKLY` 指定每周执行,`BYDAY=WED` 表示周三,`BYHOUR`、`BYMINUTE` 和 `BYSECOND` 指定具体执行时间。 ### 查询与周三相关的任务信息 若需查询当前数据库中与周三相关的任务,可以通过查询 `ALL_SCHEDULER_JOBS` 或 `USER_SCHEDULER_JOBS` 视图获取相关信息: ```sql SELECT job_name, start_date, repeat_interval, state FROM user_scheduler_jobs WHERE repeat_interval LIKE '%WED%'; ``` 该查询将返回所有设置为在周三执行的任务名称、开始时间、重复间隔及当前状态。 ### 管理已定义的任务 - **启用任务**: ```sql BEGIN DBMS_SCHEDULER.enable('WEDNESDAY_JOB'); END; / ``` - **禁用任务**: ```sql BEGIN DBMS_SCHEDULER.disable('WEDNESDAY_JOB'); END; / ``` - **删除任务**: ```sql BEGIN DBMS_SCHEDULER.drop_job('WEDNESDAY_JOB'); END; / ``` - **手动运行任务**: ```sql BEGIN DBMS_SCHEDULER.run_job('WEDNESDAY_JOB', FALSE); END; / ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值