using Oracle.DataAccess.Client;
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Transactions;
namespace OraExpLab
{
class Program
{
static string csOra = "Data Source=...;User ID=...;Password=....";
static string csSql = "Data Source=(local);Integrated Security=SSPI;";
static void querySqlServer()
{
using (var cn = new SqlConnection(
csSql + "Application Name=" + Guid.NewGuid().ToString()))
{
var cmd = new SqlCommand("SELECT getdate() as D", cn);
cn.Open();
var dr = cmd.ExecuteReader();
dr.Read();
Console.WriteLine(dr["D"]);
cn.Close();
}
}
static void queryOraServer()
{
using (OracleConnection cn = new OracleConnection(csOra))
{
cn.Open();
var cmd = cn.CreateCommand();
cmd.CommandText = "SELECT SYSDATE as D FROM DUAL";
var dr = cmd.ExecuteReader();
dr.Read();
Console.WriteLine(dr["D"]);
cn.Close();
}
}
static void raiseOraError()
{
using (OracleConnection cn = new OracleConnection(csOra))
{
cn.Open();
var cmd = cn.CreateCommand();
cmd.CommandText = @"
declare
begin
raise_application_error(-20001, '我錯了');
end;
";
try
{
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
Console.WriteLine("ORACLE CUST ERROR:" + ex.Message);
}
}
}
static void Main(string[] args)
{
raiseOraError();
using (var tx = new TransactionScope())
{
querySqlServer();
queryOraServer();
raiseOraError();
Console.WriteLine(
Transaction.Current.TransactionInformation.LocalIdentifier);
Console.WriteLine(
Transaction.Current.TransactionInformation.DistributedIdentifier);
}
Console.Read();
}
}
}