2011-12-20 47 views
0

我有一個參數'temptbl'(varchar類型)sp'Update_driver_Position',在sp中我選擇其他表的數據到'temptbl'。我知道如何在Visual Studio中運行sp,但我不知道如何從'temptbl'(在temptbl中獲取日期到sqldatareader)中選擇數據。我怎樣才能執行一個存儲過程,並從視覺工作室的臨時表中選擇?

這是我如何在SQL Server中運行的SP

Exec dbo.Update_Driver_Position '##Temp' 
Select * From ##Temp 

這是我的代碼在Visual Studio中

 using (SqlCommand cmd = new SqlCommand()) 
     { 

      string text = "Update_driver_Position"; 
      cmd.CommandType = CommandType.StoredProcedure; 

      cmd.CommandText = text; 
      SqlParameter retval = cmd.Parameters.Add("@Temptbl", SqlDbType.VarChar); 
      retval.Direction = ParameterDirection.Output; 


      cmd.Connection = this.GetConnection(); 
      cmd.Connection.Open(); 
      cmd.ExecuteNonQuery(); 

      SqlDataReader reader = (cmd.Parameters["@Temptbl"]); 

      while (reader.Read()) 
      { 
       //... 
      } 
     } 

回答

0

問題解決了! 這裏是我的代碼:

 using (SqlCommand cmd = new SqlCommand()) 
     { 

      string text = string.Format("Exec dbo.Update_Driver_Position '##Temp' Select * From ##Temp"); 
      cmd.CommandType = CommandType.Text; 

      cmd.CommandText = text; 



      cmd.Connection = this.GetConnection(); 
      cmd.Connection.Open(); 


      SqlDataReader reader = cmd.ExecuteReader(); 

      while (reader.Read()) 
      { 
       //... 
      } 
1

你是說如何我從返回的讀者帶進獲得列數據的發言權AV

int x = (int)reader["MyField"];

或者如何將數據存儲到讀者?您需要致電ExecuteReader()SqlDataReader r = cmdSproc.ExecuteReader();

下面是一些示例代碼:

using (SqlConnection con = new SqlConnection(connString)) 
      { 
       //use sproc 
       SqlCommand cmd = new SqlCommand("selMyProcedure", con); 
       cmd.CommandType = CommandType.StoredProcedure; 
       //some paramters 
       cmd.Parameters.Add("@VendorName", SqlDbType.VarChar).Value = vn; 
       cmd.Parameters.Add("@ProductTypeName", SqlDbType.VarChar).Value = pt; 
       cmd.Parameters.Add("@ProductName", SqlDbType.VarChar).Value = p; 
       con.Open(); 
        //you need to add below 
       SqlDataReader reader = cmd.ExecuteReader(); 


       while (reader.Read()) 
       { 
        int x = (int)reader["MyCol"]; 
       } 
//...more code 

換句話說,你需要分配讀取器命令對象施加到ExecuteReader()。 一旦你在讀者的數據,你可以閱讀它:reader["MyColumn"]

+0

我知道,我怎麼能傳遞「## temptbl」存儲過程事業cmd.Parameters.Add(「@ VENDORNAME」,SqlDbType.VarChar)我們添加參數不是臨時表。 – 2011-12-20 16:14:46

相關問題