由于經(jīng)常執(zhí)行SQL語句,如果一條一條執(zhí)行效率低下。
成都創(chuàng)新互聯(lián)公司主營伊寧網(wǎng)站建設的網(wǎng)絡公司,主營網(wǎng)站建設方案,重慶App定制開發(fā),伊寧h5微信小程序搭建,伊寧網(wǎng)站營銷推廣歡迎伊寧等地區(qū)企業(yè)咨詢
oarclecmd.CommandText = sqlstr;
oraclecmd.ExecuteNonQuery();
sqlstr 可以寫成如下所示語句
begin
sql1;
sql2;
......
sqln;
end; //注意此處的分號很重要
然后同樣調(diào)用ExecuteNonQuery()方法,可以一次執(zhí)行多條sql語句。
通過網(wǎng)上查詢,找到一種方案,就是先在oracle里面對要定時的sql寫成存儲過程,再用DBMS_scheduler對存儲過程進行定時執(zhí)行。
在數(shù)據(jù)庫中新建了一個表MY_JOB_TEST
在數(shù)據(jù)庫中新建了一個表MY_JOB_TEST
在數(shù)據(jù)庫中新建了一個表MY_JOB_TEST
在PLSQL中,執(zhí)行下面語句模擬存儲過程的調(diào)用,執(zhí)行后要點提交才有反應
[sql] view plain copy
BEGIN
INSERT?INTO?MY_JOB_TEST?(NUM)?VALUES?(1);
END;
然后下面建立一個存儲過程JOB_TEST
(注意,這里用戶需要CREATE JOB權限,可以用超級管理員用戶執(zhí)行下面語句給指定用戶賦予該權限)
[sql] view plain copy
Grant?Create?Job?To?指定用戶名
[sql] view plain copy
SQLCREATE?OR?REPLACE?PROCEDURE
JOB_TEST
BEGIN
INSERT?INTO?MY_JOB_TEST?(NUM)?VALUES?(1);
END;
(此處要執(zhí)行存儲過程不能用exec JB_TEST,這種執(zhí)行方式只能在命令行中使用)
使用DBMS_SCHEDULER進行定時,這里為每分鐘執(zhí)行一次
[sql] view plain copy
SQL?BEGIN
DBMS_SCHEDULER.CREATE_JOB?(
job_name???????????=??'SCHEDULER_TEST',
job_type???????????=??'STORED_PROCEDURE',
job_action?????????=??'JOB_TEST',
start_date?????????=??sysdate,
repeat_interval????=??'FREQ=MINUTELY;INTERVAL=1');
END;
但是這樣子定時任務并不會執(zhí)行。
我們可以用下面的命令查看一下scheduler的狀態(tài)
[plain] view plain copy
SQLSELECT?*?FROM?USER_SCHEDULER_JOBS;
此時我們可以看到enable的狀態(tài)是false的,因此我們需要去啟動定時任務
[plain] view plain copy
SQLBEGIN
DBMS_SCHEDULER.ENABLE('SCHEDULER_TEST');
END
dbms_scheduler.enable('j_test'); ?--啟用jobs ??
dbms_scheduler.disable('j_test'); ?--禁用jobs ? ?
dbms_scheduler.run_job('j_test'); ?--執(zhí)行jobs ? ?
dbms_scheduler.stop_job('j_test'); ?--停止jobs ??
dbms_scheduler.drop_job('j_test'); ?--刪除jobs ?
然后再查詢job的enable裝態(tài),發(fā)現(xiàn)為true了。
然后查看MY_JOB_TEST表,發(fā)現(xiàn)每分鐘會往里面添加記錄。
當需要修改定時任務或者調(diào)度的其他屬性時,可以用下面的
dbms_scheduler.set_attribute('調(diào)度名','調(diào)度屬性','調(diào)度值');
至此,定時任務完成。
1.在SQL*PLUS下按回車不行是因為你在SQL語句結(jié)束時沒有以;(分號)結(jié)尾,以分號結(jié)尾再按回車就可以了
2.如果常用的話,建議使用PL/SQL Developer,功能強,易使用
1.在sql*plus下按回車不行是因為你在sql語句結(jié)束時沒有以;(分號)結(jié)尾,以分號結(jié)尾再按回車就可以了
2.如果常用的話,建議使用pl/sql
developer,功能強,易使用