c# สั่ง run oracle store procedure โดยไม่ต้องรอ store รันจนเสร็จ

ตอบกระทู้

รูปแสดงอารมณ์
:icon_plusone: :like: :plusone: :gfb: :-D :) :( :-o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: :angry: :baa: :biggrin:
รูปแสดงอารมณ์อื่นๆ

BBCode เปิด
[img] เปิด
[url] เปิด
[Smile icon] เปิด

กระทู้แนะนำ
   

มุมมองที่ขยายได้ กระทู้แนะนำ: c# สั่ง run oracle store procedure โดยไม่ต้องรอ store รันจนเสร็จ

c# สั่ง run oracle store procedure โดยไม่ต้องรอ store รันจนเสร็จ

โดย jataz2 » 07/08/2015 3:16 pm

ความต้องการคือ มี store procedure ชื่อ spSyncCustomer บน Oracle ที่ต้องไปสั่ง run และตัว spSyncCustomer เองใช้เวลารันประมาณ 2 ชม. จึงจะเสร็จ ทางออกที่อยากให้ใช้คือ DBMS_JOB.SUBMIT ครับคือ สั่ง run เป็น background โดยที่ไม่ต้องรอผลลัพท์ของ spSyncCustomer เพราะใช้เวลาถึง 2 ชม. ไม่สามารถขยายเวลา timeout เพื่อรอมันรันจนเสร็จได้

โค้ด: เลือกทั้งหมด

 using Oracle.DataAccess.Client;
     
            string ConnectionString = "Data Source=10.555.55.55:1511/CUSTOMERDB;Password=cusdbpwd;User ID=cusdbus;PERSIST SECURITY INFO=True;";
            OracleConnection conn = new OracleConnection();

            try
            {
                conn.ConnectionString = ConnectionString;
                conn.Open();

                OracleCommand cmd = new OracleCommand();
                cmd.Connection = conn;
                cmd.CommandText = "DECLARE job_no NUMBER; BEGIN  DBMS_JOB.SUBMIT(job_no,'name_of_your_store_produre;',SYSDATE);  COMMIT;  END;";
                cmd.CommandType = CommandType.Text;
                cmd.CommandTimeout = 10;
                cmd.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
            }
            finally
            {
                conn.Close();
            }

ข้างบน