Vorbereitung: .Net Objekte auf dem Server installieren
Falls die nicht bereits mit der Installations der Oracle Software erfolgt ist:
Aufruf PowerShell
# DataAcess DLL einbinden $AssemblyFile ="d:\oracle\product\11.2.0.3\client_64bit\odp.net\bin\2.x\Oracle.DataAccess.dll" # Connect String mit Angabe TNS Alias $ConnectionString = "User ID=scott;Password=tiger;Data Source=oraGPI;Persist Security Info=True" # Auszuführendes Kommando $SQLCommand = "SELECT * FROM EMP where deptno=10" # DLL laden [Reflection.Assembly]::LoadFile($AssemblyFile) # Falls der Fehler auftritt : " ist keine zulässige Win32-Anwendung. (Ausnahme von HRESULT: 0x800700C1)" # auf richtige bit Variante der DLL Achten (64bit OS => 64bit Oracle Home!) #Verbindung zur Datenbank aufbauen # Object anlegen $OracleConnection = New-Object -TypeName Oracle.DataAccess.Client.OracleConnection # Connect string setzen $OracleConnection.ConnectionString = $ConnectionString # Datenbank Verbindung öffnen $OracleConnection.Open() #SQL Kommando initalisieren $OracleCommand = New-Object -TypeName Oracle.DataAccess.Client.OracleCommand $OracleCommand.CommandText = $SQLCommand $OracleCommand.Connection = $OracleConnection # Adapter laden $OracleDataAdapter = New-Object -TypeName Oracle.DataAccess.Client.OracleDataAdapter $OracleDataAdapter.SelectCommand = $OracleCommand #Dataset anlegen $DataSet = New-Object -TypeName System.Data.DataSet #Dataset mit dem Ergebniss der SQL Abfrage "füllen" $OracleDataAdapter.Fill($DataSet) #Daten ausgeben $DataSet.Tables[0]
Alternativ mit Reader abfragen: (siehe auch msdn oracledatareader )
$reader=$OracleCommand.ExecuteReader() # Struktur des Ergebniss Records anzeigen for ($i=0;$i -lt $reader.FieldCount;$i++) { Write-Host "Position ::" $i "::" $reader.GetName($i)"::" $reader.GetDataTypeName($i) } # Ausgeben der Ergebnisse # auf die richtige Nummerierung achten while ($reader.read()) { $empno = $reader.GetInt32(0) # Reader "härten", falls ename null sein sollte if ( $reader.IsDBNull(1) ) { $ename= "" } else { $ename = $reader.GetString(1) } $hiredate= $reader.GetDateTime(4) Write-Host "$ename $empno $hiredate" }
#Verbindung wieder schließen $OracleDataAdapter.Dispose() $OracleCommand.Dispose() $OracleConnection.Close()
Quellen:
Oracle .Net DB Beispiele
Objekt Referenzen: