我想在我的MYSQL數據庫的Back Order表中添加一個新的Back Order。我得到的問題是,當我嘗試選擇Supplier_ID將其添加到Back Order Table時,該程序給我一個錯誤,指出「Subquery返回多個值」。什麼導致「子查詢返回多於一行」錯誤?
供應商表(如果您不清楚如何正確地構建它)
| Supplier_ID | SupName |
| 1 | EWS |
| 6 |富蘭克林麪包店|
返回順序表
| BackOr_ID | Supplier_ID | BackOr_Org_Date | Sup_Name |
我目前使用MySQL查詢:
CREATE DEFINER=`root`@`%` PROCEDURE `sp_BackOrder`(
in supname varchar(50),
in dat date
)
BEGIN
insert into Back_Order
(
Supplier_ID,
BackOr_Org_Date,
Sup_Name
)
values
(
(select Supplier_ID from Supplier Where SupName = supname),
dat,
supname
);
END
使用該查詢的C#代碼是:
MySqlCommand cmd = new MySqlCommand("sp_BackOrder", new MySqlConnection(*Connection String*));
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new MySqlParameter("supname", Supp_Name)); //Supp_Name is the Supplier Name (a string variable)
cmd.Parameters.Add(new MySqlParameter("dat", DateTime.Now.ToShortDateString())); //dat is the date the Order is placed
cmd.Connection.Open();
cmd.ExecuteNonQuery();
cmd.Connection.Close();
我得到的唯一錯誤是子查詢(我認爲是Select Query)返回的值超過1。我試過四處尋找,甚至看着Stackoverflow,但找不到任何解決方案的問題。任何幫助,將不勝感激。
你的值塊沒有意義 – Drew
「SupName」字段是唯一的嗎?它應該是? –
子查詢'從供應商中選擇Supplier_ID其中,SupName = supname'返回多個值,因爲您的數據庫中至少有2個供應商具有相同的名稱。當使用這些子查詢時,按唯一列進行搜索。 –