存儲過程分針
㈠ oracle 存儲過程 把一個表A的數據傳入另一個表B中,每30分鍾傳一次 ,這個存儲過程怎麼寫
這個應該是JOB的功能兄弟,不是過程.
sql如下:
begin
sys.dbms_job.submit(job => :job,
what => 'begin
INSERT 表A(指定列名)select 指定列名 from 表B; COMMIT;
end;',
next_date => to_date('09-10-2012 23:24:43', 'dd-mm-yyyy hh24:mi:ss'),
interval => 'sysdate+30/1440');
commit;
end;
/
㈡ oracle如何把天數轉換成小時和分鍾!!!
應該有專門的函數吧,我得弄清楚你是直接寫Oracle存儲過程,還是使用java或者VC去連Oracle資料庫,如果是前台使用編程語言操作的話,可以使用編程語言進行轉換。Java中有豐富的日期時間轉換函數。如果是寫存儲過程的話,可以看看Oracle的 開發文檔,應該有吧,祝你成功,兄弟。
㈢ sql server存儲過程中 判斷時間欄位是否在當前時間前後5分鍾以內 該怎麼寫
select abs(datediff(s,'2012-05-22 14:21:25',getdate()))<=300
就是通過datediff函數比較兩個時間的秒數差,絕對值在300秒以內
㈣ 如何用plsql每隔5分鍾自動執行一次存儲過程
1,創建一個存儲過程
bb
作用是往pig表中插入數據
sql>
create
or
replace
procere
job_pro_test
as
2
begin
3
insert
into
job_test
values(sysdate);
4
end;
5
/
procere
created
2,創建一個job,名稱為job2010
;作用是每分鍾(60×24=1440)執行一次存儲過程job_pro_test。
sql>
variable
job2010
number;
sql>
begin
2
dbms_job.submit(:job2010,'job_pro_test;',sysdate,'sysdate+1/1440');
3
end;
4
/
㈤ sql時間問題
where uptime>=dateadd(hour,-4,getdate())
where uptime>=dateadd(mm,-4,getdate())
where uptime>=dateadd(ss,-4,getdate())
條件欄位本身最好不要加函數如datediff(uptimexxxxx)>xzxx之類的
這樣有索引的情況下,效率很差,因為不走索引了
還有能夠盡量用區間閉合的查詢
如大數據xx>10 跟xx>=11之類的效率相差會很大的
㈥ 存儲過程第一次執行耗時30分鍾,第二次開始每次耗時不到3分鍾,這是什麼原因
sql是高級語言,資料庫系統執行sql之前要將sql語句進行解析(相當於編譯),這個過程叫硬解析;資料庫系統每次執行sql之前都會檢查共享池中是不是存在已經解析過的語句,如果有就拿來直接用,這叫軟結息。軟解析比硬解析效率高,這是影響因素之一;
二、第一次執行可能沒有走索引,第二次執行使用第一次執行的執行計劃
三、看你的存儲過程做了些什麼,有可能第一次把活幹完了,導致第二次執行沒什麼活干
以上回答基於oracle體系結構
㈦ oracle存儲過程效率問題,存儲過程,每分鍾1千條數據,有44多萬數據,怎麼樣能執行速度快
建議你找找有關提高語句效率的方法,將有些語句調整調整,比如將確定的且篩選數據比較厲害的條件向後靠,同時增加一些索引,另外寫法上調整一下,例如,既然count出來 V_COUNT不是一條就不要取 V_SERV_ID 到變數中了,直接返回失敗.
另外 SELECT T.ID INTO V_ID FROM rms.SS_MODULE T WHERE T.SS_ID = (SELECT T.ID FROM DEVICE T WHERE T.NAME = (SELECT T.DEVICE_NAME FROM SOFT_SWITCH_TABLE T WHERE T.DEVICE_NAME IS NOT NULL)) AND T.CODE = V_CODE; 這個語句中好多T 我都不知哪個欄位是哪個表的
㈧ oracle中job如何設定每小時的第10分鍾執行
可以實現的,先創建一個存儲過程,在創建Job。
我們在項目開發中,常常會有一些復雜的業務邏輯。使用oracle的存儲過程,可以大大減少java程序代碼的編寫工作量,而且存儲過程執行在資料庫上,這樣可以利用oracle的良好性能支持,極大地提高程序執行效率和穩定性。定時執行存儲過程,就要用到job。
先創建一個存儲過程:
SQL> create or replace procere MYPROC as
2begin
3update table_name set date= 'TRUNC(sysdate,'hh24') +1/24+ 10 / (24*60)';
4end;
5/
創建JOB :
SQL> variable job1 number;
SQL>
SQL> begin
2 dbms_job.submit(:job1,'MYPROC;to_date('00:10:00','HH:MI:SS'),'sysdate+1/24');//每天24h,即每小時運行myproc過程一次
3end;
4/
運行JOB :
SQL> begin
2dbms_job.run(:job1);
3end;
4/
㈨ 資料庫的觸發器每兩分鍾執行一次行不行
sqlserver代理中的作業計劃完全滿足你的要求。
㈩ oracle job使用 我想資料庫每隔十分鍾執行一次存儲過程A,怎麼寫,本人小白,沒用過job,想大神們求解
begin
sys.dbms_job.submit(job => :job, -- job編號
what => 'dbms_output.pub_line(''asdf'');', -- 執行腳本,換成你的存儲過程
next_date => to_date('17-01-2011 16:17:31', 'dd-mm-yyyy hh24:mi:ss'), -- 下次執行時間
interval => 'trunc(sysdate)+10/24/60'); -- 執行時間間隔10min
commit;
end;
/