當前位置:首頁 » 編程語言 » 執行oraclesql語句

執行oraclesql語句

發布時間: 2023-01-16 04:07:42

❶ 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;


  • 然後下面建立一個存儲過程JOB_TEST

    (注意,這里用戶需要CREATE JOB許可權,可以用超級管理員用戶執行下面語句給指定用戶賦予該許可權)

    [sql] view plain

  • GrantCreateJobTo指定用戶名



  • [sql] view plain

  • SQL>CREATEORREPLACEPROCEDURE

  • JOB_TEST

  • BEGIN

  • INSERTINTOMY_JOB_TEST(NUM)VALUES(1);

  • END;


  • (此處要執行存儲過程不能用exec JB_TEST,這種執行方式只能在命令行中使用)
  • 使用DBMS_SCHEDULER進行定時,這里為每分鍾執行一次

    [sql] view plain

  • 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;


  • 但是這樣子定時任務並不會執行。
  • 我們可以用下面的命令查看一下scheler的狀態

    [plain] view plain

  • SQL>SELECT*FROMUSER_SCHEDULER_JOBS;

  • 此時我們可以看到enable的狀態是false的,因此我們需要去啟動定時任務
  • [plain] view plain

  • SQL>BEGIN

  • DBMS_SCHEDULER.ENABLE('SCHEDULER_TEST');


  • 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('調度名','調度屬性','調度值');



  • 至此,定時任務完成。

❷ oracle中如何執行sql語句

1.在SQL*PLUS下按回車不行是因為你在SQL語句結束時沒有以;(分號)結尾,以分號結尾再按回車就可以了
2.如果常用的話,建議使用PL/SQL Developer,功能強,易使用

❸ oracle 存儲過程執行動態sql實例

oracle的動態sql是指在語句塊使用execute immediate 執行sql語句,sql語句可以使用存儲過程傳的參數進行拼接,本文針對varchar2和number兩種類型的參數類型,進行sql拼接並執行。

功能:輸入日期區間,銷售數量滿足上限和下限的產品id

1.正常傳值

輸出結果

2.若果number類型的參數傳空,會報ora-00936:缺失表達式,可以在存儲過程中增加對參數null值的判斷

oracle 動態拼接傳入參數,varchar2類型可以使用'''|| IN_START_DTIME || ''' ,number類型可以使用'||IN_DOWN_LIMIT||' ; 拼接的過程需要注意校驗參數的合法性,增加存儲過程的容錯性。臨時表使用了會話級,存儲過程執行完,可以通過查詢存儲過程獲取結果。

❹ 如何在Oracle中一次執行多條sql語句

1、將你要執行的sql語句寫入一個txt文件中;

2、修改文件後綴為.sql文件;

3、使用 「source + 路徑+文件名」 註:

source與路徑之間有空格。

❺ C#怎麼執行oracle資料庫的SQL語句

由於經常執行SQL語句,如果一條一條執行效率低下。
oarclecmd.CommandText = sqlstr;
oraclecmd.ExecuteNonQuery();
sqlstr 可以寫成如下所示語句
begin
sql1;
sql2;
......
sqln;
end; //注意此處的分號很重要
然後同樣調用ExecuteNonQuery()方法,可以一次執行多條sql語句。

❻ Oracle中怎樣一次執行多條sql語句

有時我們需要一次性執行多條sql語句,而用來更新的sql是根據實際情況用代碼拼出來的
解決方案是把sql拼成下面這種形式:
begin
update TB_VG set seq = 1, vessel_id = 'Jin14', vessel_type = 'TRACK' where batch_number = '20837' and train_id = '0233086';
update TB_VG set seq = 2, vessel_id = 'Jin14', vessel_type = 'TRACK' where batch_number = '20992' and train_id = '0233110';
end;
總結如下:
以begin開始,以end;結尾(end後的分號不能省),中間的每個sql語句要以分號;結尾
在實際編碼中,發現即使這樣也會有錯誤發生,把sql語句中的換行符替換成空格就可以了
比較穩妥的編碼方式是:
1、以正常的方式編寫sql,根據閱讀與編寫的需要,中間肯定會有換行符
2、在執行之前進行替換:strSql = strSql.Replace("r\n", " ").Replace('\n', ' ');
如果不採用這種方式,可能的異常有:
ORA-00933: SQL 命令未正確結束(如果sql沒有以分號結尾)
ORA-00911: 無效字元(如果未加begin 和 end)
ORA-06550: 第x行, 第xxx列: PLS-00103: 出現符號 "end-of-file"在需要下列之一時:......(如果end後面沒有;分號)
ORA-06550: 第x行, 第xxx列: PLS-00103: 出現符號 ""在需要下列之一時:......(語句之間有換行符)

❼ Oracle中如何執行已經寫好的sql語句

1.在sql*plus下按回車不行是因為你在sql語句結束時沒有以;(分號)結尾,以分號結尾再按回車就可以了
2.如果常用的話,建議使用pl/sql
developer,功能強,易使用

熱點內容
linux64位內存 發布:2025-07-16 01:02:36 瀏覽:960
壓縮衣尺碼表 發布:2025-07-16 00:47:33 瀏覽:640
安卓恢復了出廠怎麼找回照片 發布:2025-07-16 00:43:56 瀏覽:933
為什麼說伺服器已停止響應 發布:2025-07-16 00:29:36 瀏覽:391
python判斷字元串是否為空 發布:2025-07-16 00:21:47 瀏覽:210
安卓轉蘋果用什麼軟體 發布:2025-07-16 00:21:45 瀏覽:628
安卓官服如何登ios 發布:2025-07-16 00:21:32 瀏覽:624
天龍搶店腳本 發布:2025-07-16 00:14:47 瀏覽:958
華為榮耀存儲卡 發布:2025-07-16 00:10:40 瀏覽:659
mysql創建utf8資料庫 發布:2025-07-16 00:04:08 瀏覽:105