CREATE PROCEDURE sp_emp_info
( @EmployeeID INT,
@EmployeeID INT OUTPUT,
@LastName VARCHAR(30) OUTPUT,
@FirstName VARCHAR(15) OUTPUT,
@Phone VARCHAR(10) OUTPUT )
AS
SELECT @EmployeeID,
@LastName,
@FirstName,
@Phone
FROM Employees
WHERE EmployeeID = @EmployeeID
GO
这会带来此错误
变量名称' @ EmployeeID'已经宣布。变量名在查询批处理或存储过程中必须是唯一的。
必须声明标量变量" @ LastName"
我有EmployeeID作为输入和输出。当我尝试通过运行以下命令删除输出时:
CREATE PROCEDURE sp_emp_info
( @EmployeeID int,
@LastName VARCHAR(30) OUTPUT,
@FirstName VARCHAR(15) OUTPUT,
@Phone VARCHAR(10) OUTPUT )
AS
SELECT @EmployeeID,
@LastName,
@FirstName,
@Phone
FROM Employees
WHERE EmployeeID = @EmployeeID
GO
有效,但程序不会运行。比如我跑了
EXECUTE sp_emp_info 7
它出现了这个错误:
程序或功能' sp_emp_info'期望参数' @ LastName',这是未提供的。
你觉得我做错了什么?谢谢。
答案 0 :(得分:0)
您需要为可选参数设置默认值。在这种情况下,我将它们设置为NULL
。
CREATE PROCEDURE sp_emp_info
( @EmployeeID int )
AS
SELECT EmployeeID
LastName,
FirstName,
Phone
FROM Employees
WHERE EmployeeID = @EmployeeID
GO
答案 1 :(得分:0)
好的,我正在以复杂的方式解决这个问题。这个简单的编码:
CREATE PROCEDURE sp_emp_info
(@EmployeeID int)
如
SELECT EmployeeID,
姓,
名字,
电话
来自员工
WHERE EmployeeID = @EmployeeID
GO
解决了我的问题。 谢谢大家。非常感谢