に失敗MySQLを使用して2つのテーブルを更新しようとすると、私のクエリです:ここ
CREATE DEFINER=`root`@`%` PROCEDURE `individual_Address_update`(
IN oIndividualID int(11),
IN oParentID int(11),
IN oFarmName varchar(45),
IN oFirstName varchar(45),
IN oLastName varchar(45),
IN oMiddleName varchar(45),
IN oRoleTypeID int(11),
IN oPhone varchar(45),
IN oPhoneExtention varchar(45),
IN oMobilPhone varchar(45),
IN oFax varchar(45),
IN oEmail varchar(45),
IN oAddress1 varchar(45),
IN oAddress2 varchar(45),
IN oCity varchar(45),
IN oState varchar(45),
IN oZip varchar(45),
IN oCountry varchar(45)
)
BEGIN
Update individual i
left join address a
on a.individualID = i.individualID
set
i.individualID = oIndividualID,
i.ParentID = oParentID,
i.FarmName = oFarmName,
i.FirstName = oFirstName,
i.LastName = oLastName,
i.MiddleName = oMiddleName,
i.RoleTypeID = oRoleTypeID,
i.Phone = oPhone,
i.PhoneExtention = oPhoneExtention,
i.MobilPhone = oMobilPhone,
i.Fax = oFax,
i.Email = oEmail,
a.individualID = oIndividualID,
a.Address1 = oAddress1,
a.Address2 = oAddress2,
a.City = oCity,
a.State = oState,
a.Zip = oZip,
a.Country = oCountry
Where i.individualID = a.individualID;
END
私は私のFormViewコントロールのためにSqlDataSourceコントロールにこれを持参し、私は、データベースと2つのテーブルを更新しようとすると、私はこのエラーを取得します。パラメータを " o個人IDはコレクションに見つかりません。 私は何が間違っていますか?私は、MySqlのストアドプロシージャとAsp.netページのFormViewを使用して2つのテーブルを更新するだけです。
(質問とは無関係) 'Where i.individualID = a.individualID'を使うと、実際には' LEFT JOIN'ではなく 'INNER JOIN'を実行していることを意味します。 –
ストアドプロシージャを呼び出すために使用しているasp.netコードをポストすると便利です。また、クエリのindividualID * anywhere *でフィルタリングしているようには見えません。これは、結合条件が満たしているすべての行を更新します(これを意図しない限り)。そうしないと、WHERE句を変更する必要があります。 – dash