【问题标题】:Procedure or function 'usp_UserAddNewUser' expects parameter过程或函数“usp_UserAddNewUser”需要参数
【发布时间】:2017-01-05 01:07:41
【问题描述】:

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

错误:(过程或函数“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

【问题讨论】:

  • 你是如何调用这个存储过程的?这很可能是问题所在 - 这段代码很好
  • 我也认为这就是问题所在,如果他想传递单个参数,我给他的是另一种选择,因为他检索值的表位于单个表中。但如果这是来自代码,那就另当别论了。
  • @mar 是的,现在我已经解决了我的问题,谢谢回复

标签: sql-server stored-procedures parameters insert


【解决方案1】:

我好像发现了你的问题,

你给我的是这个:

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 攻击,请阅读 this 了解 sp_executesql 和 this 了解有关 sp_executesql 和 Sql 注入的更多信息

【讨论】:

  • 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')然后得到错误消息 102,级别 15,状态 1,行 1 'Joker' 附近的语法错误。
  • 我能得到你的Skype ID吗?我需要你的帮助
  • 我用你上面提到的代码做了,但问题仍然存在。我可以得到你的 Skype id 吗?请
  • 对不起,我还在忙工作,请问您从哪里获取要插入的数据?特别是插入语句的值?我猜它来自一张桌子。以及关于如何将参数传递到存储过程的代码。
猜你喜欢
  • 2011-02-05
  • 2013-01-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多