我收到此错误:
过程或函数'NewEmployee'需要参数'@LastName',这是未提供的
这就是我所拥有的:
CREATE PROCEDURE NewEmployee1 (
@LastName nvarchar(75)
,@FirstName nvarchar(50)
,@HireDate datetime
,@Birthdate datetime
,@Title nvarchar(30))
WITH EXECUTE AS CALLER
AS
BEGIN
Set NOCOUNT ON;
Begin Try
Begin Transaction;
INSERT INTO Employees (LastName,FirstName,HireDate,BirthDate,Title)
VALUES (@LastName, @FirstName, @HireDate,@Birthdate,@Title)
COMMIT TRANSACTION;
End Try
Begin Catch
--Rollback any active or uncommitable transactions before
--inserting information in the errorLog
If @@Trancount > 0
Begin
Rollback Transaction;
End
Execute NewEmployee1 ;
End Catch;
End;
Exec NewEmployee
@LastName = 'Halpert',
@FirstName = 'Jim',
@HireDate = '11/14/2011',
@BirthDate = '04/02/1971',
@Title = 'Sales';
我应该像@lastName nvarchar(75)= Null吗?
答案 0 :(得分:4)
你有一行Execute NewEmployee1 ;
试图执行没有参数的存储过程。
如果您想要为参数分配默认值,则需要按照建议...
进行操作CREATE PROCEDURE NewEmployee1 (
@LastName nvarchar(75) = NULL
,@FirstName nvarchar(50) = NULL
,@HireDate datetime = NULL
,@Birthdate datetime = NULL
,@Title nvarchar(30) = NULL
)
或者用任何适当的默认值替换NULL。
答案 1 :(得分:3)
您将过程定义为NewEmployee1
,然后拨打NewEmployee
。
编辑:
我认为在Execute NewEmployee1 ;
语句中调用CATCH
可能会导致无限循环,如果在使用默认值调用存储过程时出现问题...你确定要调用SP再次出现在CATCH
?
答案 2 :(得分:1)
我看到了
CREATE PROCEDURE **NewEmployee1**
当你稍后使用
打电话时Exec NewEmployee
没有名称末尾的1。
可能你有另一个程序NewEmployee,它没有param @LastName。