0
я создать хранимую процедуру в T-SQLхранимой процедуры из T-SQL в C#
CREATE PROCEDURE price_proc @type_of_service int, @date_of_receipt date, @date_of_delivery date, @mechanic_id int, @car_id_p int, @price_for_work float
AS
DECLARE @count int, @car_id int
SELECT @car_id = car_id, @count = COUNT(car_id) FROM work WHERE car_id = @car_id_p GROUP BY car_id
IF(@count > 1 AND @count < 4)
BEGIN
SET @price_for_work = @price_for_work - (@price_for_work * 0.1)
INSERT INTO work(type_of_service_id, date_of_receipt, date_of_delivery, mechanic_id, car_id, price_for_work) VALUES (@type_of_service, @date_of_receipt, @date_of_delivery, @mechanic_id, @car_id_p, @price_for_work)
END
ELSE IF(@count > 4)
BEGIN
SET @price_for_work = @price_for_work - (@price_for_work * 0.15)
INSERT INTO work(type_of_service_id, date_of_receipt, date_of_delivery, mechanic_id, car_id, price_for_work) VALUES (@type_of_service, @date_of_receipt, @date_of_delivery, @mechanic_id, @car_id_p, @price_for_work)
END
GO
Я называю это в моем коде
string d1 = String.Format("{0:yyyy-MM-dd}", dateTimePicker1.Value);
string d2 = String.Format("{0:yyyy-MM-dd}", dateTimePicker2.Value);
cmd = new SqlCommand("price_proc", SqlConn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("@type_of_service", SqlDbType.Int)).Value = type_of_service_id;
cmd.Parameters.Add(new SqlParameter("@date_of_receipt", SqlDbType.Date)).Value = d1;
cmd.Parameters.Add(new SqlParameter("@date_of_delivery", SqlDbType.Date)).Value = d2;
cmd.Parameters.Add(new SqlParameter("@mechanic_id", SqlDbType.Int)).Value = mechanic_id;
cmd.Parameters.Add(new SqlParameter("@car_id_p",SqlDbType.Int)).Value = car_id;
cmd.Parameters.Add(new SqlParameter("@price_for_work", SqlDbType.Float)).Value = price;
cmd.ExecuteNonQuery();
Но это не работает? Я печатаю cmd.ExecuteNonQuery() и даю -1. Помоги мне, пожалуйста.
Поместите 'cmd.ExecuteNonQuery' вокруг try {} catch {} и сообщите нам, что это за ошибка .. также при запуске этой строки вручную' SELECT @car_id = car_id, @count = COUNT (car_id) FROM work WHERE car_id = @car_id_p GROUP BY car_id 'какие результаты возвращаются .. также что, если count is = to 1 или count is = to 4 ..? 'IF (@count> = 1 AND @count <4)', а второй должен проверить if> = 4 – MethodMan