一直使用下面的代码从数据库中返回单个记录。我读过 ExecuteScalar 是返回单个记录的正确方法。不过,我一直无法让 ExecuteScalar 工作。我将如何更改它以使用 ExecuteScalar 在 VB.Net 中返回单个值?
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
最佳答案
来自微软
"OracleCommand 类的 ExecuteOracleScalar() 方法用于执行返回单个值作为 OracleType 数据类型的 SQL 语句或存储过程。如果该命令返回结果集,则该方法返回的第一列的值第一行。如果返回的是 REF CURSOR 而不是 REF CURSOR 指向的第一行的第一列的值,则该方法返回空引用。OracleCommand 类的 ExecuteScalar() 方法类似于 ExecuteOracleScalar()方法,但它返回一个值作为 .NET Framework 数据类型。
话虽如此,但在使用 Oracle 存储过程时,这两种方法都没有用。 Oracle 存储过程不能作为 RETURN 语句的一部分返回值,只能作为 OUT 参数返回值——请参阅不返回数据的存储过程部分。此外,除非通过 REF CURSOR 输出参数,否则无法返回结果集 - 这将在下一节中讨论。
您只能通过使用 RETURN 参数(如上一节所示)而不是使用 ExecuteScalar 方法之一来检索 Oracle 函数的返回值。”
http://msdn.microsoft.com/en-us/library/ms971506.aspx
关于vb.net - 您如何使用 ExecuteScalar 从 Oracle 数据库返回单个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/361175/