Как я могу выполнить хранимую процедуру и выбрать из ее временной таблицы в Visual Studio? - PullRequest
0 голосов
/ 20 декабря 2011

У меня есть это sp ˋUpdate_driver_Positionˋ с параметром ˋtemptblˋ (тип varchar), в sp i я выбираю данные другой таблицы в ˋtemptblˋ. Я знаю, как запустить SP в Visual Studio, но я не знаю, как выбрать данные из «tetebbl» (получить дату в temptbl для sqldatareader).

Вот так я запускаю sp в SQL Server

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

Ответы [ 2 ]

1 голос
/ 20 декабря 2011

Вы говорите, как я могу получить данные столбца из возвращенного читателя, скажем, 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 голосов
/ 23 декабря 2011

Проблема решена! Вот мой код:

        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())
            {
               //...
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...