Visual Studio 2008 で ASP.NET(C#) アプリケーションを作成し、SQLExpress 2005 に接続しています。
パラメータ化されたストアド プロシージャを使用して SqlDataSource にバインドされた FormView コントロールを更新しようとすると、「指定された引数が多すぎます」というエラー画面が常に表示されます。
DataSource.Update() メソッドを呼び出す前に、リストをクリアしてすべてのパラメーターを手動で追加しようとしました。ブレークポイントを使用してテストしたところ、Update メソッドが起動する直前に、ストアド プロシージャで指定した 8 つの引数が UpdateParameters コレクションに保持されているため、コレクションが求めたものに準拠していることがわかります。
EXEC ステートメントを含む type="text" の更新コマンドを渡すことは機能しますが、プロシージャ自体を呼び出すことによって機能する必要があります。
他の誰かがこれらの「余分な議論」に出くわしましたか、それとも私は EPR をプレイして虚数変数を追跡していますか?
CREATE PROC spUpdateUserProfile
@UserNameVar nvarchar(256),
@DisplayNameVar varchar(30),
@FNameVar varchar(20),
@LNameVar varchar(20),
@EmailVar varchar(30)=NULL,
@LocationVar varchar(100)=NULL,
@BirthdateVar smalldatetime=NULL,
@BiographyVar varchar(2000)=NULL
AS
UPDATE UserProfile
SET UserDisplayName = @DisplayNameVar,
UserFName = @FNameVar,
UserLName = @LNameVar,
UserSharedEmail = @EmailVar,
UserLocation = @LocationVar,
UserDOB = @BirthdateVar,
UserBiography = @BiographyVar
WHERE UserProfile.UserID =
(SELECT UserProfile.UserID FROM UserProfile
JOIN aspnet_Users ON UserProfile.UserID = aspnet_Users.UserId
WHERE aspnet_Users.UserName = @UserNameVar)