轉帖|使用教程|編輯:莫成敏|2019-10-25 10:44:34.263|閱讀 386 次
概述:PL/SQL Developer是一個集成開發環境,它專門針對Oracle數據庫的存儲程序單元的開發所用。本文描述了使用PL/SQL Developer在在Oracle中創建定時任務的內容。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
PL/SQL Developer是一個集成開發環境,它專門針對Oracle數據庫的存儲程序單元的開發所用。現在越來越多的商業邏輯和應用程式邏輯都在使用Oracle服務器,所以PL/SQL編程在整個開發過程中也變得越來越重要。PL/SQL開發者在開發Oracle應用程序的時候都注重于開發工具簡單易用,代碼簡潔和開發效率高等特點。
PL/SQL Developer具有強大的PL/SQL編輯器、集成調試器、PL/SQL美化、SQL窗口、命令窗口等窗口,讓你的數據庫開發簡單、高效!
相信很多人在使用PL/SQL Developer會遇到一些困難,這時候就需要上網查找資料來解決了,就好比如何在Oracle中創建定時任務,應該不少人都有這樣的問題吧,現在就來看看應該怎么解決吧~
最近由于需要對數據庫的一個表進行定時更新,之前并沒有接觸過PL/SQL和Oracle的定時任務Job,只是在Java Web項目中寫過一些dao層的一些增刪改查SQL語句。為了實現這一需求,于是在網上找了各種資料,最后發現PL/SQL developer 在DBMS_JOB的創建定時任務job時提供了許多方便,本人使用的是PL/SQL Developer Version 8.0.4.1514 。
Oracle數據庫在Oracle 10G新增了DBMS_SCHEDULER的功能,比較之前使用的DBMS_JOB,其功能更強也更安全,但是細節問題太多,對于我這個新手來說看著有點頭大。于是選擇了DBMS_JOB。
創建定時任務job之前首先需要有我們要操作的數據庫表,然后我們應該先建立存儲過程,在PL/SQL Developer中,我們新打開一個Program Window,如圖1所示。
圖1 新打開一個 Program Window
存儲過程的代碼編寫這里就略過,有什么不懂的就谷歌吧,一定能解決你的問題的!編寫完成后,選擇執行按鈕,存儲過程一般編譯通過的話是會提示compiled successfully的,如果有問題的話PL/SQL是會直接提示錯誤信息的,你按照提示進行修改就行。這里需要說明的是,存儲過程成功編譯通過,創建好job后,執行job卻始終執行錯誤,提示執行失敗,這是你也得回頭看看很可能是你的存儲過程有運行錯誤(這里我也不知道怎么稱呼,較java里面的說法,暫時這樣稱呼吧)。像我這次就碰到這種情況,弄得我好生郁悶。這里推薦你自己先test一下自己編寫的存儲過程,是不是存在運行問題。執行test操作可以這樣:在procedures目錄下,找到那個你剛剛創建好的存儲過程,單擊右鍵選擇”test“,這時會彈出”test window“,選擇執行按鈕
,這樣就可以避免因為存儲過程造成的job不能運行的錯誤了。
創建好正確的存儲過程后,我們要建立一個job。選擇DBMS_Jobs目錄,并單擊右鍵,選擇 New,這是便會彈出一個job創建對話框,如圖2所示。
圖2 dbms_job創建對話框
由上圖可以知道,其中what,Next date,Interval是需要我們填寫的,Borken一般不要勾選,下面詳細說下這三項的寫法:
1、what
what項是填寫執行的任務的名稱及其輸入參數。這里由于沒有涉及到輸入參數,所以我只寫了存儲過程名,需要注意的是格式必須是:存儲過程名;。例如我新建的存儲過程叫proc_test,那么what項就應該寫成這樣 “proc_test;”,雙引號只是格式需要,請無視。(注意分號千萬不能忘了寫了,當然你忘了系統會提示你job創建錯誤的,嘿嘿)
2、Next date
Next date項是填寫job下次的執行時間,一般我們不立即執行的話,那么這個就是job第一次執行的時間了。具體格式的話可以參考網上的,很詳細。這里我說下我常用的格式吧。(貌似也可以不填,那么Apply之后會變成當前系統時間,然后可以選中job號單擊右鍵run立即執行。)
為了說明清楚,首先需要知道sysdate是oracle數據庫的系統時間,可以使用 select sysdate from dual來查看當前系統時間。在oracle中sysdate+1表示當前的時間加一天,也就是明天這個時候,其中的1表示1天,那么一個小時就可以表示為1/24,一分鐘1/1440。如果我想要在當前的時間的兩小時后執行那么就可以填為sysdate+1/12。如果想要獲得整點時間建議使用trunc()函數,trunc(sysdate)是表示當前日期的零點,比如說我要讓它在今天晚上的9點開始執行的話,可以這樣寫trunc(sysdate)+21/24。具體的時間可以根據自己的需求來寫。當然還可以使用to_date()的寫法,這里不說了,個人覺得沒必要拼字符串,麻煩。
3、Interval
Interval項表示job任務執行的時間間隔,可以不填。如果每填的話默認值為null,這樣job就執行一次就停止了。如果我們需要定時執行任務,那這項就必填不可了。格式其實和Next date一樣,這里舉個例子,如果我需要該任務每天凌晨兩點執行的話,可以這樣寫:trunc(sysdate)+1+1/12。其他的可以以此類推,就不再說明了。
確認填寫完成后,單擊”Apply",如果填寫無誤的話,就生成了一個job,在dbms_job目錄下可以看到,剛創建好的job編號是有雙引號的。填寫有錯的話就好好檢查下哪里出了問題。另外需要說明的是,如果你需要立即執行的話,可以選中job,單擊右鍵,選擇"run“,任務便會立即執行。
以上是我在最近用PL/SQL Developer 創建定時任務時學習到的一些小知識,有什么理解的不對的地方,還請多多指教。
附錄一些常用的job查看sql語句:
select * from dba_jobs; //查看所有用戶的job
select * from dba_jobs_running; //查看當前正在運行的job
select * from user_jobs; //查看當前用戶的job
本文內容就是這樣了,希望對您有所幫助哦~想要了解更多產品的資訊可以繼續關注我們哦~您也可以下載PL/SQL Developer免費版評估一下~
相關內容推薦:
想要購買PL/SQL Developer正版授權,或了解更多產品信息請點擊
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自: