2015-06-20 4 views
0

Следующая хранимая процедура работает так, как я хочу, в дизайнере Visual Studio. Результатом является таблица, содержащая все гонки расстояния для ввода @CourseNameВозвращает набор результатов из хранимой процедуры SQL Server на vb.net

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. Какой тип данных я объявляю в качестве выходной переменной, чтобы полный набор результатов был возвращен вызывающему приложению?

+1

Выходные переменные предназначены для возврата одного значения. В SQL Server вы можете возвращать результаты только с помощью оператора select –

+0

@JamesZ Я не уверен, что понимаю. В моем примере, что бы я выбрал? – user995689

+1

Так же, как сейчас, есть ли проблема/ошибка? –

ответ

0

Существовал, очевидно, больше работы, чтобы сделать, чем я понял, но только в том случае, если кто-то еще натыкается этот вопрос решение, которое я, наконец, адаптированный в другом месте: -

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() 

Очевидно, что выше всего чтобы продемонстрировать, что запрашиваемые данные действительно возвращаются из базы данных. Но теперь я знаю, что я могу справиться с этим более полезным способом.

+0

Это не ответ или решение. Это просто объясняет, что вы просто не изучали, что делать. На самом деле у вас не было проблем. –

+0

@T S Ну, в духе этого сайта, а не комментируя, что не ответ, было бы не лучше дать ответ? Вот почему я задал вопрос в конце концов. – user995689

+0

Ну, в духе этого сайта, ваш вопрос должен быть «хорошо исследован». В вашем случае не было никаких проблем, а скорее недостатка знаний/опыта. Вы можете найти сотни примеров, ** «как получить набор записей из хранимой процедуры» **, просто выполнив его. –