私はC#のプログラミングが初めてです。オラクル dB を照会するスクリプトを作成しました。行数が 0 より大きい場合は、bat ファイルを実行するはずですが、そうでない場合は終了するはずです。
これまでに書いたコードは次のとおりです。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Oracle.DataAccess.Client; // ODP.NET Oracle managed provider
using Oracle.DataAccess.Types;
namespace trigOra
{
class Program
{
static void Main(string[] args)
{
string oradb = "Data Source=OMP1;User Id=user;Password=pwd;";
OracleConnection conn = new OracleConnection(oradb); // C#
conn.Open();
OracleCommand cmd = new OracleCommand();
cmd.Connection = conn;
cmd.CommandText = "SELECT cast(Count(*) as varchar(20)) as trig FROM DMSN.DS3R_1XRTT_VOICE_TRIGGER";
//cmd.CommandType = CommandType.Text;
OracleDataReader dr = cmd.ExecuteReader();
dr.Read();
int cnt;
if (int.TryParse(dr.GetString(0), out cnt))
{
if (cnt > 0)
{
System.Diagnostics.Process.Start(@"C:\AutoBatch\backup\trigger.bat");
cmd.CommandText = "TRUNCATE TABLE DMSN.DS3R_1XRTT_VOICE_TRIGGER";
cmd.ExecuteNonQuery();
}
}
conn.Dispose();
}
}
}
この部分を常に実行しているように見えることを除いて、コードは機能します。
if (cnt > 0)
{
System.Diagnostics.Process.Start(@"C:\AutoBatch\backup\trigger.bat");
cmd.CommandText = "TRUNCATE TABLE DMSN.DS3R_1XRTT_VOICE_TRIGGER";
cmd.ExecuteNonQuery();
返される行数は 0 ですが、うーん...