"Die angegebene Umwandlung ist ungültig", wenn das Auffüllen der Datentabelle aus OracleDataAdapter.Fill()

Ich kann nicht scheinen, um herauszufinden, diese Frage überall auf Google (oder StackOverflow), die mich wirklich überrascht, also ich bin setzen Sie auf hier, um anderen zu helfen in der gleichen situation.

Ich habe eine SQL-Abfrage, die gut läuft auf Oracle Sql-Developer, aber wenn ich es durch C# mitadapter.Fill(table) um die Ergebnisse zu bekommen, bekomme ich Specified cast is not valid Fehler (System.InvalidCastException).

Hier ist die cut-down-version der C# - code:

var resultsTable = new DataTable();

using (var adapter = new OracleDataAdapter(cmd))
{
    var rows = adapter.Fill(resultsTable);  //exception thrown here, but sql runs fine on Sql Dev

    return resultsTable;
}

Und hier ist eine vereinfachte version des SQL:

SELECT acct_no, market_value/mv_total
FROM myTable
WHERE NVL(market_value, 0) != 0
AND NVL(mv_total, 0) != 0

Wenn ich entfernen Sie die division-Klausel, ist es nicht Fehler - so ist es speziell auf, die. Jedoch, beide market_value und mv_total sind vom Typ Number(19,4) und ich kann sehen, dass die Oracle-adapter erwartet eine dezimale, so was gegossen ist statt? Warum funktioniert es auf SqlDev aber nicht in C#?

InformationsquelleAutor namford | 2014-05-29
Schreibe einen Kommentar