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

Post a reply

Smilies
:icon_plusone: :like: :plusone: :gfb: :-D :) :( :-o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: :angry: :baa: :biggrin:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

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

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

by jataz2 » 07/08/2015 3:16 pm

ความต้องการคือ มี 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();
            }

Top