Я выполняю хранимую процедуру SQL Server в C #, но оба моих выходных параметра возвращаются пустыми. Но когда я запускаю эту хранимую процедуру непосредственно в SSMS, я получаю значения для обоих параметров. Я использовал тот же порядок ввода №.
Может кто-нибудь сказать мне, что не так в моем коде? Спасибо
using (SqlConnection con = new SqlConnection(CS))
{
SqlCommand cmd = new SqlCommand("wt_find_open_pick_ticket_count", con);
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@input_order_no", order_no);
cmd.Parameters.Add("@status", SqlDbType.Int).Direction = ParameterDirection.Output;
cmd.Parameters.Add("@results", SqlDbType.VarChar, 1000).Direction = ParameterDirection.Output;
con.Open();
cmd.ExecuteNonQuery();
MessageBox.Show(cmd.Parameters["@status"].Value.ToString());
MessageBox.Show(cmd.Parameters["@results"].Value.ToString());
}
ALTER procedure wt_find_open_pick_ticket_count
@input_order_no varchar(20),
@results varchar(1000) OUTPUT,
@status int OUTPUT
AS
SELECT
status =
CASE
WHEN COUNT(oe_pick_ticket.pick_ticket_no)>0 THEN 0
ELSE 1
END,
results =
CASE
WHEN COUNT(oe_pick_ticket.pick_ticket_no)> 0 THEN 'Message'
ELSE ''
END
FROM oe_pick_ticket with (nolock)
WHERE
oe_pick_ticket.order_no = @input_order_no
AND oe_pick_ticket.invoice_no IS NULL
AND oe_pick_ticket.delete_flag = 'N'
AND oe_pick_ticket.print_date > '2014-01-01'
GROUP BY oe_pick_ticket.order_no