我正在 Visual Studio 2008 中编写一个 ASP.NET(C#) 应用程序并连接到 SQLExpress 2005。
在尝试使用参数化存储过程更新绑定到 SqlDataSource 的 FormView 控件时,我经常收到一个错误屏幕,提示“指定的参数过多”。
在调用 DataSource.Update() 方法之前,我尝试清除列表并手动添加所有参数。我已经使用断点进行了测试,在 Update 方法触发之前,UpdateParameters 集合包含我在存储过程中指定的 8 个参数,因此我知道我的集合符合我的要求。
传入包含 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)