过程或函数XXX指定了太多参数

时间:2013-04-10 14:49:51

标签: sql sql-server sql-server-2008 sql-server-2008-r2

所以我现在整天都在和这个问题作斗争。起初我认为必须使用我的调用代码,即使这一切看起来都不错。调用代码只是来自VB代码隐藏文件的标准调用,并且无论如何都没有链接到数据绑定。我提到这一点,因为我已经看到很多其他人因为DataGrids等而有这个问题。

然后我转到数据库本身并手动执行该过程,它在SQL Sevrer Manager中给出了相同的错误。我已经尝试删除该过程并重新创建它,甚至从头开始重写它仍然会发生。我也尝试从@Password参数中删除默认的NULL值,但仍然没有变化。

我正在运行SQL Server 2008 R2

以下是程序代码:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[sp_AddUser] 
    @Username       varchar(50),
    @Fullname       varchar(50),
    @Password       varchar(50) = NULL,
    @Datecreated    DateTime,
    @RoleID         int,
    @ResetPwd       bit,
    @Email          varchar(50), 
    @locked         bit, 
    @Sign           varchar(max), 
    @Sysuser        bit
AS
BEGIN
    INSERT INTO users ( 
        user_name,
        full_name,
        password,
        datetime_created,
        role_id,
        password_reset,
        email_address, 
        locked, 
        email_signature, 
        asrsys_user)
    VALUES (
        @Username,
        @Fullname,
        @Password,
        @Datecreated,
        @RoleID,
        @ResetPwd,
        @Email, 
        @locked, 
        @Sign, 
        @Sysuser)
END

1 个答案:

答案 0 :(得分:5)

您应该避免使用sp_作为存储过程的前缀 - 它保留给Microsoft使用 - 并调用奇怪的查找规则(在当前数据库之前搜索master),这意味着, MS引入同名的SP(通过例如服务包),MS SP将“赢”。

但是在这种情况下,微软已经已经“赢了” - 他们有一个名为sp_adduser的存储过程,而且正是被调用的存储过程。重命名存储过程。

相关问题