我写了一个存储过程,但是我收到了一个错误。请指导我,如何摆脱它?
错误:(过程或函数'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
答案 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和this的this以获取有关sp_executesql和Sql注入的更多信息