Как получить значения столбцов с помощью выходных параметров хранимой процедуры в C#
У меня есть SQL-таблица с 3 столбцами: ID (bigint), Tag1 (int), DateTime (datetime). Я создал хранимую процедуру, которая выбирает из моей таблицы значения Tag1 от DataStart до DataStop. Это прекрасно работает. Выполнение сохраненного proc возвращает, правильно, 5 значений.
Я хочу получить эти 5 значений в C#.
Я не получаю никакой ошибки, когда нажимаю кнопку, но никакое значение не отображается в MessageBox. Я не уверен, что мне следовало использовать параметр @Col в качестве вывода. Что я должен сделать, чтобы получить эти ценности?
Что я уже пробовал:
Моя хранимая процедура:
ALTER PROCEDURE [dbo].[PS_TagLogging] -- Add the parameters for the stored procedure here @Col varchar(30) Output, @DataStart varchar(50) , @DataStop varchar(50) AS BEGIN SET NOCOUNT ON; DECLARE @sql nvarchar(1000) SET @sql = N'SELECT ' + @Col + ', DateTime ' + 'FROM [TRTF_TagLogging].[dbo].[tbl_TagLogging] WHERE (DateTime BETWEEN ' +''''+ @DataStart +'''' + ' AND ' +''''+ @DataStop+'''' +')' exec (@sql) PRINT @sql END execute [PS_TagLogging] '[Tag1]', '2020-02-05 13:06:30.697','2020-02-05 13:12:25.703'
Мой код C# :
private void DB_ProcStoc_Click(object sender, EventArgs e) { using (SqlConnection connection = new SqlConnection(@"Data Source=DESKTOP-JQSJAF8\SQLEXPRESS;Initial Catalog=TRTF_TagLogging;Integrated Security=True")) { using (SqlCommand cmd = new SqlCommand("PS_TagLogging", connection)) { connection.Open(); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add("@Col", SqlDbType.VarChar, 30).Direction = ParameterDirection.Output; cmd.Parameters.Add("@DataStart", SqlDbType.VarChar, 30).Value = "2020-02-05 13:06:30.697"; cmd.Parameters.Add("@DataStop", SqlDbType.VarChar, 30).Value = "2020-02-05 13:06:50.700"; cmd.ExecuteNonQuery(); strCol = Convert.ToString(cmd.Parameters["@Col"].Value); //strCol is a string globally declared connection.Close(); } } MessageBox.Show("Proc: " + strCol + " values"); }