ms sql存储过程返回数据不输出
Posted
技术标签:
【中文标题】ms sql存储过程返回数据不输出【英文标题】:ms sql stored procedure return data without output 【发布时间】:2012-04-01 15:22:37 【问题描述】:嘿,我正在尝试查找从没有向其发送参数也没有任何返回的输出参数的存储过程中获取数据的示例。虽然它确实显示数据。
我怎样才能从我下面使用的代码中得到它?
Dim myCommandSQL As New SqlCommand
Dim myReaderSQL As SqlDataReader = Nothing
Dim intX As Integer = 0
Dim connSql As SqlConnection
Try
connSql = New SqlConnection("Server=sqlprod;" & _
"Database=ISS3_PROD;" & _
"User ID=xxx;" & _
"Password=xxx;" & _
"Trusted_Connection=False;")
connSql.Open()
myCommandSQL.CommandType = CommandType.StoredProcedure
myCommandSQL.CommandText = "Select_Prod"
Dim sqlParReturn1 As System.Data.SqlClient.SqlParameter = myCommandSQL.Parameters.Add("@return_value", SqlDbType.VarChar)
sqlParReturn1.Direction = ParameterDirection.Output
myCommandSQL.ExecuteNonQuery()
MsgBox(sqlParReturn1)
connSql.Close()
myCommandSQL.Dispose()
@return_value 我只是放在那里看看会发生什么,但我什么也没返回。
任何帮助都会很棒!
大卫
【问题讨论】:
【参考方案1】:如果你为你的命令分配一个参数,那么你的存储过程应该有一个参数。此外,如果将方向指定为Output
,则应在存储过程中将该参数标记为OUTPUT
。
如果您只想要不带任何参数的存储过程的结果,请删除所有包含sqlParReturn1
的行。此外,您的命令不是“非查询”——您正在查询数据。要获得它,您应该这样做(我还使用一些更好的实践技术重构了您的代码):
Using connSql As SqlConnection = New SqlConnection(...)
connSql.Open()
Using myCommandSQL As SqlCommand = connSql.CreateCommand()
myCommandSQL.CommandType = CommandType.StoredProcedure
myCommandSQL.CommandText = "Select_Prod"
Using reader As SqlDataReader = myCommandSQL.ExecuteReader()
If reader.HasRows Then
While reader.Read()
// loops through the rows returned
End While
End If
End Using
End Using
End Using
【讨论】:
【参考方案2】:这是使用 ADO 数据读取器读取数据的MSDN documentation。我认为他们的示例很好地解释了这一点,因此我只是在此处复制并粘贴了示例。只需替换您的 SQL 设置,然后您只需调用 ExecuteReader
,然后在 reader.Read
查找行时运行 while 循环。就在循环内部,您可以使用序号或列名通过reader.Get...
访问您的列。
Private Sub HasRows(ByVal connection As SqlConnection)
Using connection
Dim command As SqlCommand = New SqlCommand( _
"SELECT CategoryID, CategoryName FROM Categories;", _
connection)
connection.Open()
Dim reader As SqlDataReader = command.ExecuteReader()
If reader.HasRows Then
Do While reader.Read()
Console.WriteLine(reader.GetInt32(0) _
& vbTab & reader.GetString(1))
Loop
Else
Console.WriteLine("No rows found.")
End If
reader.Close()
End Using
End Sub
【讨论】:
以上是关于ms sql存储过程返回数据不输出的主要内容,如果未能解决你的问题,请参考以下文章