Visual studio 如何在visual studio中执行存储过程并从其临时表中进行选择?

Visual studio 如何在visual studio中执行存储过程并从其临时表中进行选择?,visual-studio,sql-server-2008-r2,Visual Studio,Sql Server 2008 R2,我有一个spˋUpdate_driverˋPositionˋ和一个参数ˋtestblˋvarchar type,在sp中我选择其他表的数据到ˋtestblˋ中。我知道如何在VisualStudio中运行sp,但我不知道如何从ˋtestbl中选择数据ˋ获取testbl中的日期到sqldatareader 这是我在SQL Server中运行sp的方式 Exec dbo.Update_Driver_Position '##Temp' Select * From ##Temp 这是我在Visual

我有一个spˋUpdate_driverˋPositionˋ和一个参数ˋtestblˋvarchar type,在sp中我选择其他表的数据到ˋtestblˋ中。我知道如何在VisualStudio中运行sp,但我不知道如何从ˋtestbl中选择数据ˋ获取testbl中的日期到sqldatareader

这是我在SQL Server中运行sp的方式

 Exec dbo.Update_Driver_Position '##Temp'
 Select * From ##Temp
这是我在VisualStudio中的代码

        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())
            {
                //...
            }
        } 

你是说如何从返回的读卡器中获取列数据到say av中

intx=intreader[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的命令对象分配给读卡器。 一旦你在读卡器中有了数据,你就可以通过读卡器[MyColumn]来读取它。

问题解决了! 这是我的密码:

        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())
            {
               //...
            }

我知道,如何使用cmd.Parameters将'tentbl'传递给存储过程cause。Add@VendorName,SqlDbType.VarChar我们添加的参数不是临时表。