โดย 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();
}
ความต้องการคือ มี store procedure ชื่อ spSyncCustomer บน Oracle ที่ต้องไปสั่ง run และตัว spSyncCustomer เองใช้เวลารันประมาณ 2 ชม. จึงจะเสร็จ ทางออกที่อยากให้ใช้คือ DBMS_JOB.SUBMIT ครับคือ สั่ง run เป็น background โดยที่ไม่ต้องรอผลลัพท์ของ spSyncCustomer เพราะใช้เวลาถึง 2 ชม. ไม่สามารถขยายเวลา timeout เพื่อรอมันรันจนเสร็จได้
[code] 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();
}[/code]