2011-12-20 43 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

相关问题