ここ

2012-02-10 7 views
1

に失敗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つのテーブルを更新するだけです。

+0

(質問とは無関係) 'Where i.individualID = a.individualID'を使うと、実際には' LEFT JOIN'ではなく 'INNER JOIN'を実行していることを意味します。 –

+0

ストアドプロシージャを呼び出すために使用しているasp.netコードをポストすると便利です。また、クエリのindividualID * anywhere *でフィルタリングしているようには見えません。これは、結合条件が満たしているすべての行を更新します(これを意図しない限り)。そうしないと、WHERE句を変更する必要があります。 – dash

答えて

0

パラメータを追加するときは、必ず?

例: cmd.Parameters.AddWithValue( "?oIndividualID"、3);

+0

ありがとうございます。これはストアドプロシージャです。私はこのコードを何かの裏に置いてはいけません。 –

+0

はい、ストアドプロシージャにはパラメータがあります。パラメータが正しく設定されているかどうかを確認するには、SqlDataSourceをチェックします。ちなみに、MySQLデータベースを使用している場合は、MySqlDataSourceを代わりに使用する必要があります。 –

+0

私は薄くしないAsp.Netは私のツールボックスにMySqlDataSourceを提供します。これが新しいものでない限り? –