Page 1 of 1

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

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

Code: Select all

 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();
            }