OracleClientを使う

Testing System.Data.OracleClientNemerleらしさを強めに書き直してみる。

using System.Console;
using System.Data;
using System.Data.OracleClient;

module M {
  dbstr = "Data Source=testdb;User Id=scott;Password=tiger;";

  Main () : void {
    def iter (reader) {
      if (!reader.Read ()) 
        reader.Close ();
      else {
        def (ename, job) = (reader.Item ["ename"], reader.Item ["job"]);
        WriteLine ($"Employee Name: $ename, Job: $job");
        iter (reader);
      }
    };

    mutable conn = null;
    try {
      conn = OracleConnection (dbstr);
      conn.Open ();
      def cmd = conn.CreateCommand ();
      cmd.CommandText = "SELECT ename, job FROM scott.emp";
      iter (cmd.ExecuteReader ());
    }
    finally {
      when (conn != null)
        conn.Close ();
    }
  }
}

何故か型推論がインデクサを見つけてくれなかったので、Item経由でアクセスしています。