过程或函数'usp_UserAddNewUser'需要参数

时间:2017-01-05 01:07:41

标签: sql-server stored-procedures parameters insert

我写了一个存储过程,但是我收到了一个错误。请指导我,如何摆脱它?

  

错误:(过程或函数'usp_UserAddNewUser'需要参数'@FirstName',但未提供。)

代码:

create proc usp_UserAddNewUser
    (@FirstName nvarchar(50),
     @LastName  nvarchar(50),
     @Email nvarchar(50),
     @ContactNumber nvarchar(50),
     @Address nvarchar(50),
     @UserName nvarchar(50),
     @Password nvarchar(50) )
as 
begin
    INSERT INTO [dbo].[Registration] ([FirstName], [LastName],
                                      [Email], [ContactNumber],
                                      [Address], [UserName], [Password])
    VALUES (@FirstName, @LastName,
            @Email, @ContactNumber,
            @Address, @UserName, @Password)
end

1 个答案:

答案 0 :(得分:0)

好像我发现了你的问题,

你给我的是这个:

USE [MVC4DB] GO DECLARE return_value int EXEC   return_value = [dbo].[usp_UserAddNewUser] SELECT    'Return Value' = return_value GO

我的示例的正确语法是

exec usp_UserAddNewUser 'Joker','TheJoke','Joking@Joker.com','12345678','At my cave','Mr.J','Secret'

对于您的示例,您不能将select语句插入存储过程,因为您的存储过程将需要您创建的参数。

如果您真的希望您的存储过程符合您的要求<我会修改你的代码。

create proc usp_UserAddNewUser
           (@FirstName)
as 
begin
        INSERT INTO [dbo].[Registration]
               ([FirstName]
               ,[LastName]
               ,[Email]
               ,[ContactNumber]
               ,[Address]
               ,[UserName]
               ,[Password])
 VALUES
     select [FirstName],[LastName],[Email],[ContactNumber],[Address],[UserName],[Password] from employee where firstname = @FirstName
end

请注意,使用此语法,您对SQLi攻击持开放态度,请阅读有关sp_executesql和thisthis以获取有关sp_executesql和Sql注入的更多信息