2012-03-16 138 views
4

嘿所有我想找到的示例從沒有參數發送到它的存儲過程獲取數據,也沒有任何返回的輸出參數。雖然它確實顯示數據。ms sql存儲過程返回的數據沒有輸出

我怎麼能從我的代碼即時通訊使用下面?

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我只是放在那裏看看會發生什麼,但我什麼也沒有返回。

任何幫助將是偉大的!

大衛

回答

3

如果您分配一個參數到你的命令,那麼你的存儲過程應採取的參數。此外,如果您指定方向爲Output,則應在存儲過程中將該參數標記爲OUTPUT

如果您只是想要不帶任何參數的存儲過程的結果,請刪除所有包含sqlParReturn1的行。此外,您的命令不是「非查詢」 - 您查詢數據。在使用ADO DataReader的讀取數據

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 
+0

謝謝!現在工作得很好。 – StealthRT 2012-03-16 03:35:27

2

這裏是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