A. oracle怎麼直接執行sql語句
Oracle可以使用SQL Plus進行執行,但是可視化不夠,建議使用另外一個查詢輔助工具PLSQL Developer,使用PLSQL Developer工具裡面各種可視化都很好看出查詢出數據的結果以及可以用這個工具分析SQL的執行分析。
你把腳本內容直接在存儲過程中實現,然後利用job去定時調度就好了。
C. 我想定時讓 oracle 執行一段sql語句 怎麼做
如:定時刪除三分鍾前的數據
###1.創建存儲過程
SQL>createorreplaceprocerepro_delete_aas
2begin
3deletefromatwheret.a<(sysdate-3/1440);###一天1440分鍾。即一分鍾是1/1440
4end;
5/
Procerecreated
###2創建job
SQL>variablejob_pro_delete_anumber;
SQL>begin
2dbms_job.submit(:job_pro_delete_a,'pro_delete_a;',sysdate,'sysdate+3/1440');
3end;
4/
PL/
job_pro_delete_a
---------
127
###3.調用job
SQL>begin
2dbms_job.run(:job_pro_delete_a);
3end;
4/
PL/
job_pro_delete_a
---------
127
###4.刪除job
SQL>begin
2dbms_job.remove(:job_pro_delete_a);
3end;
4/
Ps:select*fromuser_jobs;
dbms_job.remove(ID);
D. oracle job 能否用sql語句控制時間
可以的!
參考如下代碼
FOR P_JOB IN (SELECT *
FROM USER_JOBS
WHERE WHAT LIKE 'EXEC_PROCEDURE%;'
AND WHAT ! = 'EXEC_PROCEDURE_START;'
AND BROKEN = 'N') LOOP
BEGIN
DBMS_JOB.CHANGE(JOB => P_JOB.JOB,
WHAT => NULL,
NEXT_DATE => SYSDATE + P_TIME / 1440,
INTERVAL => NULL);
COMMIT;
END;
P_TIME := P_TIME + 1;
END LOOP;
E. oracle觸發器中定時執行sql
關於Oracle 觸發器中定時執行SQL 的問題, Oracle觸 發器只是在表中數據被更新 如Insert,update,delete 等情況下才會觸發,不能做到定時,只是能是有變化時才會執行!
要做到定時執行可使用Job 來完成
數據已經完成插入,建議插入數據時,直接使用觸發器
例2:限制對Departments表修改(包括INSERT,DELETE,UPDATE)的時間范圍,即不允許在非工作時間修改departments表。
CREATEORREPLACETRIGGERtr_dept_time
BEFOREINSERTORDELETEORUPDATE
ONdepartments
BEGIN
IF(TO_CHAR(sysdate,'DAY')IN('星期六','星期日'))OR(TO_CHAR(sysdate,'HH24:MI')NOTBETWEEN'08:30'AND'18:00')THEN
RAISE_APPLICATION_ERROR(-20001,'不是上班時間,不能修改departments表');
ENDIF;
END;
F. Oracle中如何定時執行一條SQL語句
通過網上查詢,找到一種方案,就是先在oracle裡面對要定時的sql寫成存儲過程,再用DBMS_scheler對存儲過程進行定時執行。
在資料庫中新建了一個表MY_JOB_TEST
在資料庫中新建了一個表MY_JOB_TEST
在資料庫中新建了一個表MY_JOB_TEST
在PLSQL中,執行下面語句模擬存儲過程的調用,執行後要點提交才有反應
[sql] view plain
BEGIN
INSERTINTOMY_JOB_TEST(NUM)VALUES(1);
END;
GrantCreateJobTo指定用戶名
SQL>CREATEORREPLACEPROCEDURE
JOB_TEST
BEGIN
INSERTINTOMY_JOB_TEST(NUM)VALUES(1);
END;
- (此處要執行存儲過程不能用exec JB_TEST,這種執行方式只能在命令行中使用)
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;
- 但是這樣子定時任務並不會執行。
SQL>SELECT*FROMUSER_SCHEDULER_JOBS;
- 此時我們可以看到enable的狀態是false的,因此我們需要去啟動定時任務
SQL>BEGIN
DBMS_SCHEDULER.ENABLE('SCHEDULER_TEST');
然後下面建立一個存儲過程JOB_TEST
(注意,這里用戶需要CREATE JOB許可權,可以用超級管理員用戶執行下面語句給指定用戶賦予該許可權)
[sql] view plain
[sql] view plain
使用DBMS_SCHEDULER進行定時,這里為每分鍾執行一次
[sql] view plain
我們可以用下面的命令查看一下scheler的狀態
[plain] view plain
[plain] view plain
dbms_scheler.enable('j_test'); --啟用jobs
dbms_scheler.disable('j_test'); --禁用jobs
dbms_scheler.run_job('j_test'); --執行jobs
dbms_scheler.stop_job('j_test'); --停止jobs
dbms_scheler.drop_job('j_test'); --刪除jobs
然後再查詢job的enable裝態,發現為true了。
然後查看MY_JOB_TEST表,發現每分鍾會往裡面添加記錄。
當需要修改定時任務或者調度的其他屬性時,可以用下面的
dbms_scheler.set_attribute('調度名','調度屬性','調度值');
至此,定時任務完成。
G. oracle創建job的腳本執行問題
在SQL*Plus中可以處理三種類型的命令:SQL語句、PL/SQL塊和SQL*Plus命令。
但三者之間是有區別的。
腳本中的 「:job」是一種綁定變數的方式,屬於sql plus的命令格式。需要寫成如下格式,然後在plsql developer的命令窗口中執行,或者到sqlplus中執行。
var job number;
begin
sys.dbms_job.submit(job => :job,
what => 'ps_inventory_io;',
next_date => to_date('01-01-4000', 'dd-mm-yyyy'),
interval => 'trunc(sysdate)+1+0/24');
commit;
end;
/
1)SQL語句是以資料庫為操作對象的語言,主要包括數據定義語言DDL、數據操縱語言DML和數據控制語言DCL以及數據存儲語言DSL。當輸入SQL語句後,SQL*Plus將其保存在內部緩沖區中。
當SQL命令輸入完畢時,有三種方法可以結束SQL命令:在命令行的末尾輸入分號(;)並按回車;在單獨一行上用斜杠(/);或用空行表示。
2)PL/SQL塊同樣是以資料庫中的數據為操作對象。但由於SQL不具備過程式控制制功能,所以,為了能夠與其他語言一樣具備面向過程的處理功能,在SQL中加入了諸如循環、選擇等面向過程的處理功能,由此形成了PL/SQL。所有PL/SQL語句的解釋均由PL/SQL引擎來完成。使用PL/SQL塊可編寫過程、觸發器和包等資料庫永久對象。
3)SQL*Plus命令主要用來格式化查詢結果、設置選擇、編輯及存儲SQL命令、以設置查詢結果的顯示格式,並且可以設置環境選項。
H. oracle寫一個定時執行的sql語句,JOB也行
關於定期執行的計劃任務,oracle中可以通過dbms_scheler包中的自帶的存儲過程進行實現;如果需要將查詢結果存入指定的目錄,需要考慮數據轉換,相對復雜,一般通過前端軟體實現;
I. oracle中如何執行sql語句
如果用sqlplus,那麼在你行的結尾要加分號(;),然後回車就行了。
例如:
select * from cat;