Return 结果集从 SQL 服务器存储过程到 vb.net

Return result set from SQL Server stored procedure to vb.net

下面的存储过程在 Visual Studio 设计器中按我的要求工作。结果是 table 包含输入 @CourseName

的所有比赛距离
ALTER PROCEDURE [dbo].[getCourseDistancesProc]
    @CourseName nvarchar(50)
AS
BEGIN
    SET NOCOUNT ON;

    SELECT DISTINCT
        RaceDistances.RaceDistance
    FROM  
        RacingMaster
    JOIN
        RaceDistances ON RacingMaster.Dist_Of_Race_FK = RaceDistances.PKRaceDistancesId
    JOIN
        Courses ON RacingMaster.RM_Course_FK = Courses.PKCourseId
    WHERE
        CourseName = @CourseName
END

我想从 vb.net 应用程序调用存储过程。我应该将什么数据类型声明为输出变量,以便将完整的结果集返回给调用应用程序?

显然有比我意识到的更多的工作要做,但为了防止其他人偶然发现这个问题,我最终从其他地方改编的解决方案是:-

Dim myConn As SqlConnection
Dim myCmd As SqlCommand
Dim results As String
Dim ConnectionString As String

' Create the connection string.
ConnectionString = "Data Source=*********;" & _
                    "Initial Catalog=*******;" & _
                    "Integrated Security=SSPI;"
myConn = New SqlConnection(ConnectionString)

myConn.Open()
Dim InputName As String
InputName = TextBox1.Text

myCmd = New SqlCommand()
myCmd.CommandText = "getCourseDistancesProc"
myCmd.CommandType = CommandType.StoredProcedure
myCmd.Parameters.AddWithValue("@CourseName", Odbc.OdbcType.NVarChar).Value = InputName
myCmd.Connection = myConn
Dim myReader As SqlDataReader = myCmd.ExecuteReader()

If myReader.HasRows Then

    Do While myReader.Read()
        Dim var As String
        var = myReader.GetString(0)
        MsgBox(var)
    Loop
Else
        MsgBox("No rows found.")
End If

myReader.Close()

显然,以上只是为了证明请求的数据确实是从数据库返回的。但现在我知道我可以用更有用的方式处理它。