Wie verwenden Sie ExecuteScalar auf einen einzelnen Wert zurückgeben, aus einer Oracle-Datenbank?
Wurde mit dem code unten, um wieder einen einzelnen Datensatz aus der Datenbank. Ich habe gelesen, dass ExecuteScalar ist der richtige Weg, um wieder einen einzelnen Datensatz. Ich habe nie in der Lage, ExecuteScalar zu funktionieren aber. Wie würde ich dies ändern und geben einen einzelnen Wert zurück in VB.Net mit ExecuteScalar?
Dim oracleConnection As New OracleConnection
oracleConnection.ConnectionString = LocalConnectionString()
Dim cmd As New OracleCommand()
Dim o racleDataAdapter As New OracleClient.OracleDataAdapter
cmd.Connection = oracleConnection
cmd.CommandText = "FALCON.CMS_DATA.GET_MAX_CMS_TH"
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.Add(New OracleParameter("i_FACID_C", OracleType.Char)).Value = facilityShortName
cmd.Parameters.Add(New OracleParameter("RS_MAX", OracleType.Cursor)).Direction = ParameterDirection.Output
Try
Using oracleConnection
oracleConnection.Open()
Using oracleDataAdapter
oracleDataAdapter = New OracleClient.OracleDataAdapter(cmd)
Dim workingDataSet As DataSet
oracleDataAdapter.TableMappings.Add("OutputSH", "RS_MAX")
workingDataSet = New DataSet
oracleDataAdapter.Fill(workingDataSet)
For Each row As DataRow In workingDataSet.Tables(0).Rows
Return CDate(row("MAXDATE"))
Next
End Using
End Using
InformationsquelleAutor user38349 | 2008-12-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Von Microsoft
"Der ExecuteOracleScalar () - Methode des OracleCommand-Klasse verwendet wird, zum ausführen einer SQL-Anweisung oder gespeicherte Prozedur, die einen einzelnen Wert zurückgibt, als OracleType Daten geben. Wenn der Befehl eine Ergebnismenge zurückgibt, gibt die Methode den Wert der ersten Spalte der ersten Zeile. Die Methode gibt einen null-Verweis, wenn Sie ein REF-CURSOR, der zurückgegeben wird, anstatt den Wert der ersten Spalte der ersten Zeile an, die der REF CURSOR verweist. Die ExecuteScalar () - Methode des OracleCommand-Klasse ist ähnlich der ExecuteOracleScalar() Methode, außer es gibt einen Wert als .NET Framework-Datentyp.
Gesagt, dass keines dieser Verfahren ist nützlich bei der Arbeit mit in Oracle gespeicherten Verfahren. Gespeicherte Oracle-Prozeduren kein Wert zurückgegeben werden kann als Teil der RETURN-Anweisung, nur als OUT-Parameter—siehe Gespeicherte Prozeduren, die Keine Daten Zurückgeben Abschnitt. Sie können auch ein ResultSet zurückgeben, außer über einen REF-CURSOR-Ausgabeparameter—dies wird im nächsten Abschnitt erörtert.
Erhalten Sie die return-Wert einer Oracle-Funktion, die nur durch einen RETURN-parameter (siehe vorherigen Abschnitt) und nicht von das ein des Sie die ExecuteScalar-Methoden".
http://msdn.microsoft.com/en-us/library/ms971506.aspx
InformationsquelleAutor
ExecuteScalar gibt einen einzelnen Wert (Skalar) kein Rekord.
InformationsquelleAutor Jim Anderson
nicht sicher, warum die andere Antwort ist als angenommen markiert, wie es scheint nicht die Frage zu beantworten
ExecuteScalar nur einen Einzelnen Wert zurückgeben - so man im Hinterkopf behalten, beim schreiben der query-Teil des Befehls.
Der code um dies zu erreichen wäre wie folgt:
InformationsquelleAutor Brian Schmitt