簡體   English   中英

C#中來自T-SQL的存儲過程

[英]Stored procedure from T-SQL in C#

我在T-SQL中創建存儲過程

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。 請幫幫我。

您要么需要選擇一個結果集,要么從存儲過程中返回一個整數。 通過代碼的外觀,我想您可能希望返回SCOPE_IDENTITY,它將等於新插入的ID。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM